[230504] module 1~4 복습

뜨개발자·2023년 5월 4일
0

TIL

목록 보기
70/74

highlight내에서 pre_tags, post_tags로 사용할 태그를 지정할 수 있음

  ...
  "highlight": {
	"pre_tags": ["<strong>"],
    "post_tags": ["</strong>"]
  }
  ...

[]로 감싸져 있어서 여러 개의 태그를 담을 수 있을 것이라고 생각했고, 아래처럼 작성해봄

  ...
  "highlight": {
    "pre_tags": ["<strong>", "<b>"],
    "post_tags": ["</strong>", "</b>"]
  }
  ...

그런데 여전히 결과는 <strong>, </strong> 태그로만 감싸져 나오고 <b>, </b> 태그는 보이지 않음


Painless 스크립트를 활용했을 때, 반환값을 볼 수 있는 방법은 없을까?


4.3장 solution 2에서는 값을 꺼낼 때, doc['url'].value로 꺼냈음
solution 3에서는 doc['authors.last_name']을 변수 authors에 저장해 둠
그리고 사용할 때, authors.get(숫자).startsWidh() 으로 사용함
구조를 잘 모르겠다.

내가 생각하기에는 3에서
-> 꺼낼 때 doc['authors.last_name'].value
-> 혹은 사용할 때 authors.get(숫자).value.startsWidh()
위 두 경우 중 하나에 해당해야 맞는 것 같은데.


profile
뜨개질하는 개발자

2개의 댓글

comment-user-thumbnail
2023년 5월 6일

highlight 기능에서 [] array로 사용하여 하이라이트를 담는 기능은 fvh(fast vector highlight) 를 사용하는 기능으로 사용됩니다.
https://www.elastic.co/guide/en/elasticsearch/reference/current/highlighting.html#fast-vector-highlighter
일반적으로 하이라이트를 우선순위에 따라 여러개를 입력할 필요는 별로 없겠지만, 필요의 경우 사용하게 되며, 예시 샘플은 다음을 진행하여 보면 이해가 되실거라 생각합니다.

PUT fvh_test
{
  "mappings": {
    "properties": {
      "fvh_test": {
        "type": "text",
        "term_vector": "with_positions_offsets"
      }
    }
  }
}

POST fvh_test/_doc
{
  "fvh_test":"The sky is blue and the mountains are high"
}

GET fvh_test

GET fvh_test/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {"fvh_test": "blue"}},
        {"match": {"fvh_test": "high"}}
      ]
    }
  },
  "highlight": {
    "fields": {
      "fvh_test": {
        "type": "fvh",
        "pre_tags": [
          """<span style="background-color: blue">""",
          """<span style="background-color: green">"""
        ],
        "post_tags": [
          "</span>",
          "</span>"
        ]
      }
    }
  }
}
답글 달기
comment-user-thumbnail
2023년 5월 8일

script 작성 시에 return에 값 줘볼 것

painless script 사이트가 존재함. 실제로 코드를 작성해 볼 수 있음
여기서 궁금한 내용 테스트 해볼 것

답글 달기