Elastic Search

Bool query (must 와 should)

miin1635@ 2023. 10. 6. 11:04

Elasticsearch bool query를 공부하면서 문제에 직면하였다. 

 

must와 should 그리고 filter의 차이는 무엇인가?  

정답은 must 와 should는 검색시 score 계산을 하고, filter 쿼리를 거치면 점수 계산을 하지 않는다 .

그렇다면 must 와 should의 차이점은? 이미지로 살펴보자 

 

현재 ds_admin_minsu_test 인덱스에는 두 개의 document가 있고 field의 구성은 

"index_name", "field_name" 두 가지로 되어있다. 

 

"index_name"이 "arigatto" 인 다큐먼트를 검색하는데, 현재 ds_admin_minsu_test 인덱스에는 두 개의 필드 이름이 모두 "index_name" = "arigatto"이므로 둘 다 검색된다. 그런데, must는 단지 포함 조건이므로 스코어도 두 문서 모두 동일하게 나온다. 그런데 만약 should 절을 사용하면 어떻게 될까?  

 

should절은 절 안의 조건에 충족하는 document의 score을 높이는 쿼리이다. 따라서 should절 안에 "field_name"이 "Axyes"라는 조건을 추가했을 때, 이에 충족되는 문서는 score가 높아질 것이다. 오른쪽의 결과를 보면 예상했던 것처럼 스코어가 올라가 있는 것을 확인 할 수 있다. 

 

 

 

'Elastic Search' 카테고리의 다른 글

ElasticSearch Analyzer 정리  (1) 2023.11.28
ES - Runtime field  (0) 2023.10.17
ES API 정리 (rare한 것 )  (0) 2023.09.21
나에게 주어진 과제들  (0) 2023.09.15
ES 설치 체크리스트  (0) 2023.09.15