-
ElasticSearch - Term, Match 차이점ElasticSearch/문법 2024. 11. 14. 11:01반응형
term 쿼리와 match 쿼리는 Elasticsearch에서 검색 시 자주 사용하는 두 가지 주요 쿼리 유형으로, 텍스트를 처리하고 검색하는 방식에 큰 차이가 있습니다. 아래는 각 쿼리의 상세 설명과 예시입니다.
1. term 쿼리
- 설명: term 쿼리는 입력된 값과 정확하게 일치하는 데이터를 찾기 위한 쿼리입니다. 이 쿼리는 텍스트 분석을 수행하지 않으며, 데이터가 있는 그대로 저장된 값과 일치하는지를 검사합니다.
- 대소문자 구분: term 쿼리는 데이터의 대소문자를 구분하며, 값이 정확히 일치해야 결과에 포함됩니다.
- 사용 사례: term 쿼리는 정확한 키워드 매칭이 필요한 경우, 예를 들어 id와 같은 고유한 식별자, 상태(status), 태그와 같은 분석되지 않은 필드에 적합합니다.
예제 데이터베이스 가정
{ "title": "New product launch", "content": "The new product has been launched successfully.", "author": "Admin" }, { "title": "New updates in our policy", "content": "Please read the new policy updates carefully.", "author": "admin" }, { "title": "Introducing new features", "content": "We are excited to announce new features.", "author": "JohnDoe" }
예제: term 쿼리
GET /posts/_search { "query": { "term": { "author": "admin" } } }
결과 분석
- term 쿼리는 author 필드가 admin과 정확히 일치하는 문서만 반환합니다.
- 결과:
{ "hits": [ { "_source": { "title": "New updates in our policy", "content": "Please read the new policy updates carefully.", "author": "admin" } } ] }
- 이유: term 쿼리는 대소문자를 구분하기 때문에, author 필드가 **소문자 admin**과 정확히 일치하는 문서만 반환됩니다. "Admin"으로 저장된 경우에는 반환되지 않습니다.
2. match 쿼리
- 설명: match 쿼리는 텍스트 필드의 값을 분석하여 부분 일치 검색을 수행합니다. Elasticsearch는 match 쿼리의 입력을 소문자로 변환하고 텍스트 분석을 거친 후 검색을 진행합니다.
- 대소문자 구분하지 않음: match 쿼리는 소문자로 변환된 토큰을 검색하기 때문에 대소문자를 구분하지 않습니다.
- 사용 사례: match 쿼리는 자연어 검색이나 대소문자 구분이 필요 없는 필드에서 검색할 때 유용합니다. 예를 들어, 제목이나 설명과 같이 분석된 텍스트 데이터에 적합합니다.
예제: match 쿼리
GET /posts/_search { "query": { "match": { "title": "NEW" } } }
결과 분석
- match 쿼리는 텍스트를 분석하여 검색하므로, 대소문자를 구분하지 않고 "new"라는 단어를 포함하는 title 필드를 모두 반환합니다.
- 결과:
{ "hits": [ { "_source": { "title": "New product launch", "content": "The new product has been launched successfully.", "author": "Admin" } }, { "_source": { "title": "New updates in our policy", "content": "Please read the new policy updates carefully.", "author": "admin" } }, { "_source": { "title": "Introducing new features", "content": "We are excited to announce new features.", "author": "JohnDoe" } } ] }
- 이유: match 쿼리는 입력 값 "NEW"를 소문자 "new"로 변환하여 검색합니다. 따라서 title 필드에 "new" 단어가 포함된 모든 문서가 반환됩니다.
term 쿼리와 match 쿼리의 비교 요약
특징term 쿼리match 쿼리
텍스트 분석 여부 분석하지 않음 분석하여 소문자 변환 등 수행 대소문자 구분 구분함 구분하지 않음 용도 키워드 매칭, 상태값 등 자연어 검색, 부분 일치 검색 예시 결과 정확히 "admin"과 일치하는 데이터만 반환 "New", "new"와 같은 키워드가 포함된 모든 데이터 반환 결론
- term 쿼리는 대소문자와 텍스트를 정확하게 매칭해야 하는 경우에 적합하며, match 쿼리는 텍스트 분석을 통해 의미 있는 검색을 하고자 할 때 적합합니다.
- 예제의 author 필드에서 "admin"과 "Admin"이 다르게 처리된 것이 term 쿼리의 특징이고, title에서 "new"를 포함한 모든 문서를 검색할 수 있는 것이 match 쿼리의 특징입니다.
반응형'ElasticSearch > 문법' 카테고리의 다른 글
ElasticSearch - Keyword, Text 차이점 파헤치기 (5) 2024.11.14 ElasticSearch - RestHighLevelClient 파헤치기 (0) 2024.11.13