-
elasticsearch term match 비교개발/Elasticsearch 2021. 2. 4. 15:39
elasticsearch 검색을 할 때 쓰이는 term 또는 match 쿼리를 구분하여 사용하고자 정리해본다.
검색에 대해 찾다보면 자주 보이는 것이 쿼리와 필터 비교인다.
현재 사용중인 aws elasticsearch 6.8 에선 match, term 모두 query 안에 있으나, 이전 예제들을 보면
match는 query에, term은 filter에 속한다.
특징을 보면
query : 캐싱되지 않으며, 스코어링 연산을 통해 적합하고 유사성 높은 결과를 찾는다.
fitler : 검색어에 대한 분석을 하지 않고 온전히 검색어와 일치하는 문서를 검색하고,
캐싱되어 속도면에 유리한 면이 있다. (RDBMS의 where 절이라 생각 할 수 있다)
수많은 데이터 중에 이름으로 검색한다 할때, 각 특징의 장점으로 인해 match와 term 어느것을 사용해야할지
혼란스러울때가 많았다.
내가 세운 기준은 왜 혼란스러워 했는지 모를 정도로 간단하다.
1. 유사한 값을 생각한다면 match
2. 두개 이상의 단어가 들어간다면 match
term 역시 terms로 복수의 단어를 검색할 수 있지만 흔히 복수의 단어는 띄어쓰기로 구분되고 하나의 문자로 입력될 때가 많다.
확실한 경우가 아니라면 이름 검색과 같은 경우는 match가 적합하다.
3. 분류하는 경우 term
필터 목적이 분류이기 category와 같은 경우는 term이 적합하다.
따라서 내가 사용하는 서비스에선
이름, 주소는 match,
분류되는 값은 term 을 사용하고 있다.
사용하기 적합한 쿼리를 찾는 것은
결과값을 보면 된다.
'개발 > Elasticsearch' 카테고리의 다른 글
aws elasticsearch snapshot 으로 데이터 백업 with java (0) 2021.02.09 엘라스틱서치와 관계형 데이터베이스 개념 비교 (0) 2019.07.23 댓글