Elasticsearch에서 히트 한 부분에 색상을 지정하고 싶습니다.

5426 단어 Elasticsearch
highlight 라는 기능으로 구현할 수 있습니다.

htps : // 코 m/카이바다 sh@기테 b/있어 ms/4아 587336166c6096f835 여기에서 만든 Twitter 데이터로 시도해 봅니다.

쿼리


{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "full_text": {
              "query": "犬"
            }
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "full_text": {}
    }
  }
}

일본어의 설정을 제대로 하고 있지 않기 때문에 별로입니다만…
1개의 포인트가 있어서, 당연히 말하면 그렇습니다만, 하이라이트 대상은 검색하지 않으면 설정할 수 없습니다.
예를 들면 , 드디어 유저명에도 하이라이트를 붙이고 싶다고 , highlight 만 추가해도 안 됩니다.

검색결과


curl -X POST -H "Content-Type: application/json" http://localhost:9200/tweet20191222/_search\?pretty -d @search.json | jq .hits.hits[].highlight.full_text
[
  "@waketi <em>犬</em>、耳ペタ"
]
[
  "<em>犬</em>シュール。塀の上から顔を出す<em>犬</em> https://t.co/Lz8jnRqtUu"
]
[
  "@waketi 賢い<em>犬</em>リリエンタール"
]
[
  "<em>犬</em>の散歩コースなうー。もう<em>犬</em>はいないけども。"
]
[
  "@WG_koro 当方無<em>犬</em>。雑種か大型<em>犬</em>希望。一先ず<em>犬</em>合わせして音楽性を確認したく。"
]
[
  "@yujinko <em>犬</em>プレイでした"
]
[
  "@waketi <em>犬</em>だけにワン"
]
[
  "@BYS777 <em>犬</em>のやつも!"
]
[
  "<em>犬</em>がハンカチ食った><"
]
[
  "@ipusiron <em>犬</em>かわいい"
]

잡히 HTML로 해본다.



그 외, 조심하는 점


highlight 는 종종 성능이 저하됩니다.
하이라이트 대상의 오프셋을 제한하는 등 튜닝이 필요할 수도 있습니다.

요약


  • HTML을 얻을 수 있기 때문에 그것을 사용하게된다
  • Elasticsearch에서 찾은 DB에서 다시 얻는 경우라고 곤란합니다.
  • 좋은 웹페이지 즐겨찾기