ElasticSearch Term vs Match

ElasticSearch Term vs Match.

ElasticSearch

term란?

  • sql의 equal(=)와 비슷하다.
  • type이 text일 경우에는 term query를 사용하면 안된다. 기본적으로 ES는 분석 중에 text 필드의 값을 변경한다.
  • 해당 index에 저장되는 token중에서 쿼리의 키워드와 일치하는 token을 찾아준다.

match란?

  • sql의 like(%)와 비슷하다.
  • type이 text일 경우에 match query를 사용하면 검색을 수행하기전에 검색어를 분석한다.
  • term과 마찬가지로 token중에서 일치하는 값들을 찾아주는데, 차이점은 바로 검색하는 키워드를 analyze 하고 analyze 한 결과의 token 들 중에서 하나라도 일치하면 결과 document 에 포함된다.
  • match에서 또 자주 사용되는 match_phrase에 관련하여 간단하게 알아보자
    • match_phrase는 검색 match 처럼 keyword를 analyze 하는 것은 동일하나 그 결과 token 들이 모두 존재하고, 순서도 순차적으로 동일한 document 만을 검색 결과에 포함한다는 차이가 있다.

만약 정확한 값을 찾을 때는 term을 이용하여서 찾는것이 좋고 조금더 광범위한 범위로 찾을 때는 match를 사용하는 것이 좋다.

Share