Elasticsearch 검색과 쿼리 - Query DSL
Elasticsearch
는 RESTFul API
를 지원하면서 다양한 검색 기능을 제공하고 있다.
검색 엔진 솔루션인 만큼 최적화된 검색 성능을 더불어 다양한 조건을 Query
질의 방식으로 검색할 수 있도록
검색 기능을 제공한다.
한번 Elasticsearch
의 검색 기능으로 어떻게 데이터를 검색할 수 있을지 간단히 살펴보고자 한다.
- Full Text Query
- Bool Query
- Relevancy
- Bool: Should
- Exact Value Query
- Range Query
Full Text Query
Full Text Query
풀-텍스트 쿼리는 Elasticsearch
검색에 사용되는 주요 Query
들을 의미한다.
match_all
match
match_phrase
query_string
match_all
match_all
은 특별한 검색 조건 없이 해당 인덱스의 모든 도큐먼트를 검색
match
match
는 풀 텍스트 검색에 가장 일반적으로 사용되는Query
- 검색하고자 하는
message
필드에 있는 문자열을 포함한 모든 도큐먼트를 검색 - 여러 단어를 공백 기준으로 분리하여 입력하면
OR
조건으로 검색 operator
필드를 함께 요청한다면,AND
조건으로 검색 가능
e.g. quick
, dog
문자열을 OR
조건으로 각각 포함한 도큐먼트 검색
e.g. quick
, dog
문자열을 AND
조건으로 모두 포함한 도큐먼트 검색
match_phrase
match_phrase
는 조건에 대한 정확한 문자열을 포함한 도큐먼트 검색slop
필드를 함께 사용하면 정확한 문자열 사이의 다른 검색어를 추가 허용하는 조건으로 검색
e.g. lazy dog
문자열을 정확하게 포함한 도큐먼트 검색
e.g. lazy
와 dog
문자열을 사이에 1개 의 단어를 추가 허용하여 도큐먼트 검색
query_string
query_string
은URL
검색에 사용되는 루씬의 검색 문법을 이용하고 있을 때 사용query_string
사용하면 다양한 복합 조건을 설정하여 검색 가능