ElasticSearch Term vs Match.
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 만을 검색 결과에 포함
한다는 차이가 있다.
- match_phrase는 검색 match 처럼 keyword를 analyze 하는 것은 동일하나 그
만약 정확한 값을 찾을 때는 term을 이용하여서 찾는것이 좋고 조금더 광범위한 범위로 찾을 때는 match를 사용하는 것이 좋다.