Query Context의 종류
종류 | 내용 |
match | 검색어가 토크나이징된 토큰들이 존재하는지 여부를 확인 |
math_pharse | match와 비슷하지만 검색어에 입력된 순서를 지켜야 한다 |
multi_match | match와 동작 원리는 같으며 다수의 필드에 검색하기 위해 사용 |
query_string | and와 or 같이 검색어 간 연산이 필요할 때 사용 |
- match
match 쿼리는 Query Context 중에서도 가장 많이 사용되는 쿼리. match 쿼리는 검색어로 들어온 문자열을 analyzer를 통해 분석한 후 inverted index에서 해당 문자열의 토큰을 가지고 있는 문서를 검색한다.


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


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


위와 같이 두 개 이상의 필드에 해당 토큰이 일치하는 문서가 있는지 검색이 가능하다. lat과 lon 필드에서 4또는 3이 포함된 문서를 출력한다.
- query_string
query_string은 and와 or같은 검색어 간 연산이 필요한 경우에 사용한다. 경우에 따라 match나 multi_match와 동일하게 동작할 수도 있고 정규표현식 기반의 쿼리가 될 수도 있다.


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


th로 끝나는 토큰이 포함되어있는 문서를 검색하여 출력한다.
참고문헌: 기초부터 다지는 ElasticSearch 운영 노하우
'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 |