본문 바로가기

Elastic Stack/개념

Query Context

Query Context의 종류

종류 내용
match 검색어가 토크나이징된 토큰들이 존재하는지 여부를 확인
math_pharse match와 비슷하지만 검색어에 입력된 순서를 지켜야 한다
multi_match match와 동작 원리는 같으며 다수의 필드에 검색하기 위해 사용
query_string and와 or 같이 검색어 간 연산이 필요할 때 사용

 

- match

match 쿼리는 Query Context 중에서도 가장 많이 사용되는 쿼리. match 쿼리는 검색어로 들어온 문자열을 analyzer를  통해 분석한 후 inverted index에서 해당 문자열의 토큰을 가지고 있는 문서를 검색한다.

match 예제

ElasticSearch는 analyzer를 통해 해당 검색어를 South와 Korea라는 두 개의 토큰으로 만들고, inverted index를 조회해서 두 개의 토큰이 가장 많이 포함된 문서들을 기준으로 _score를 생성해서 검색 결과를 출력. 출력 사진외에도 South나 Korea가 포함된 문서들도 출력한다. 

 

- match_phrase

match가 analyzer를 통해 생성된 토큰들의 순서를 고려하지 않는 것과 달리 match_phrase는 검색어의 순서도 고려한다.

match_phrase 예제

match로 검색을 할 땐 South와 Korea 두개의 토큰을 생성하여 검색하기 때문에 순서가 상관없지만 match_phrase는 South Korea라는 하나의 토큰만 생성하기 때문에 순서를 다르게 하면 위 사진과 같이 검색결과가 출력되지 않는다.

 

- multi_match

multi_match는 match와 동일하지만 두 개 이상의 필드에 match 쿼리를 날릴 수 있다.

multi_match 예제

위와 같이 두 개 이상의 필드에 해당 토큰이 일치하는 문서가 있는지 검색이 가능하다. lat과 lon 필드에서 4또는 3이 포함된 문서를 출력한다.

 

- query_string

query_string은 and와 or같은 검색어 간 연산이 필요한 경우에 사용한다. 경우에 따라 match나 multi_match와 동일하게 동작할 수도 있고 정규표현식 기반의 쿼리가 될 수도 있다.

query_string 예제

match 쿼리와 같은 의미로 만든 query_strign이다.

query_string 와일드카드 검색

th로 끝나는 토큰이 포함되어있는 문서를 검색하여 출력한다.

 

참고문헌: 기초부터 다지는 ElasticSearch 운영 노하우

http://www.yes24.com/Product/Goods/96520155

'Elastic Stack > 개념' 카테고리의 다른 글

Bool Query  (2) 2023.04.27
Filter Context  (1) 2023.04.27
Query DSL  (0) 2023.04.27
Search API  (2) 2023.04.26
analyzer  (1) 2023.04.26