filter vs must

개발새발·2023년 1월 1일
0

elasticsearch

목록 보기
39/54

이 내용에 관해 자세히 정리한 것이 없는 것 같아서 다시 정리하기로 결심했다! 또 이제와서 다시 보니 새삼 중요한 부분이라 생각한다.

🧑‍🌾 서론

현재 검색할 때 bool>should>filter>must(>terms, >term, >nested 등) 또는 bool>should>must(>match) 를 사용하고 있다. 검색 키워드가 text타입일 경우, bool>should>must 로 사용하고 있고 다른 타입일 경우에는 bool>should>filter>must 로 사용하고 있다. 왜 이렇게 하기로 했더라..? 라는 생각을 더듬어서 가보니 생각보다 중요한 내용인듯 하다. (bool>should는 다음에 다루도록 하겠다.)

🧙 filter와 must의 차이

  1. score 계산 여부
    일단 둘의 차이는 많은 분들이 아시다싶이 score 로 계산을 하느냐 마느냐 차이이다. must는 score에 영향을 미치고, filter는 score에 영향을 미치지 않는다.

  2. 동작하는 context
    must는 query context에서 동작하고, filter는 filter context 에서 동작한다. query context 는 이 문서가 쿼리에 있는 키워드와 얼마나 잘 일치하는지 를 의미하고, filter context 는 이 문서가 쿼리에 있는 키워드와 일치하는지 를 의미한다. 자세한 비교는 여기 를 참고하길!

  3. cache 동작여부
    1번과 이어지는 내용인데, must는 score 계산을 해야하기 때문에 cache를 사용하지 않는다. filter는 score 계산을 하지 않아도 되므로 cache를 사용한다.

참고 : https://unuseful.tistory.com/21

profile
발새발개

0개의 댓글