실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
✅ 검색한 키워드를 하이라이팅 처리하고 싶을 때 (highlight)
구글이나 쿠팡에서 검색을 해보면 검색한 키워드가 하이라이팅 처리가 되있는 걸 확인할 수 있다. 이 기능을 구현해보자.
✅ 실습
이전 강의에 셋팅해놓은 환경을 그대로 사용하자.
검색하기
GET /boards/_search
{
"query": {
"multi_match": {
"query": "엘라스틱서치 적용 후기",
"fields": ["title", "content"]
}
},
"highlight": {
"fields": {
"title": {
"pre_tags": ["<mark>"],
"post_tags": ["</mark>"]
},
"content": {
"pre_tags": ["<b>"],
"post_tags": ["</b>"]
}
}
}
}
응답값
{
"took": 19,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": 3.79424,
"hits": [
{
"_index": "boards",
"_id": "2k-SmJYBWhYNXJPWbr6u",
"_score": 3.79424,
"_source": {
"title": "엘라스틱서치 적용 후기",
"content": "회사 프로젝트에 엘라스틱서치를 적용한 후기를 공유합니다."
},
"highlight": {
"title": [
"<mark>엘라스틱</mark><mark>서치</mark> <mark>적용</mark> <mark>후기</mark>"
],
"content": [
"회사 프로젝트에 <b>엘라스틱</b><b>서치</b>를 <b>적용</b>한 <b>후기</b>를 공유합니다."
]
}
},
{
"_index": "boards",
"_id": "3E-SmJYBWhYNXJPWd740",
"_score": 1.7749425,
"_source": {
"title": "검색엔진 도입 사례",
"content": "이번 프로젝트에 엘라스틱서치를 적용한 후 많은 개선 효과가 있었습니다."
},
"highlight": {
"content": [
"이번 프로젝트에 <b>엘라스틱</b><b>서치</b>를 <b>적용</b>한 후 많은 개선 효과가 있었습니다."
]
}
},
{
"_index": "boards",
"_id": "20-SmJYBWhYNXJPWc75z",
"_score": 1.3862942,
"_source": {
"title": "엘라스틱서치를 사용해보니",
"content": "검색 엔진 도입 후 성능이 향상되었습니다."
},
"highlight": {
"title": [
"<mark>엘라스틱</mark><mark>서치</mark>를 사용해보니"
]
}
}
]
}
}
검색 결과에 HTML 태그로 감싼 뒤 결과값을 반환했다. 이 결과값을 활용해서 웹 페이지에서 하이라이팅 처리를 하면 된다.