opensearch에서 text 필드를 활용해서 term 서치를 진행하는데, 필드의 값에 하이픈(-)이 들어가 있는 경우에는 검색이 잘 안 되는 경우가 있습니다. 이럴 때는 해당 필드 뒤에 .keyword를 붙여주고 나면, 정상적으로 검색이 됩니다. text 필드에 대해 term 서치를 하려면 .keyword를 붙여줘야 합니다.
검색 실패 버전
{
"query": {
"term": {
"car_model": "제네시스-G80"
}
}
}
검색 성공 버전
{
"query": {
"term": {
"car_model.keyword": "제네시스-G80"
}
}
}
car_model이라는 필드명 다음에 .keyword를 붙여줬더니 텍스트에 하이픈이 포함되어 있어도 잘 검색이 됩니다.
참고자료
[1] https://stackoverflow.com/questions/11566838/elastic-search-hyphen-issue-with-term-filter
[2] https://blog.voidmainvoid.net/314
[3] https://esbook.kimjmin.net/07-settings-and-mappings/7.2-mappings/7.2.1
'DB > Elasticsearch' 카테고리의 다른 글
[OpenSearch] term, terms, wildcard 쿼리 비교 정리 (0) | 2023.09.26 |
---|