-
Elasticsearch DSL 기본내가 공부하고 싶은 IT/지식정리 2023. 1. 1. 20:52
DSL이란 Domain Specific Language 으로 JSON 에 기반한 질의 언어
DB의 SQL 과 비슷한 언어로 사용자가 원하는 데이터를 추출하기 위한 질의 언어
DSL 예시
GET /조회할 인덱스명/_search { "query": { ... } }
예) 실제 가장 기본적인 match 쿼리
GET /cn-test-idx/_search { "query": { "match": { "kor_contents": "여러" } } }
Query VS Filter
DSL 설명에 앞서 query 와 filter 간의 차이점을 이해해야 함
기본적으로 Elasticsearch 는 일치하는 검색 결과의 관련성을 점수 별로 정렬하여 각 문서와 쿼리와 얼마나 잘 일하는지 측정함
관련성 점수는 소수점 숫장이며 검색 API의 _score 메터 필드에 반한됨
_score 가 높을수록 문서의 관련성이 높다도 볼수 있음각 쿼리의 유형은 관 관련성 점수를 다르게 계산할 수 있지만 _score 계산은 query 나 filter 문에서 실행되는 것에 따라 달라짐
- query
query 문은 “이 문서가 이 쿼리 절과 얼마나 잘 일치합니까?” 라는 질문에 대답함. 문서가 일치하는지 여부를 결정하는 것 외에도 query 문은 _score 메타 필드에 관련성 점수를 계산함
캐싱되지 않음 - filter
filter 문은 query 문과 같이 “이 문서가 이 쿼리 절과 얼마나 잘 일치합니까?” 라는 질문에 대답함. 차이점은 score를 계산하지 않고 간단하게 예 또는 아니오 로 계산함
filter 문은 주로 구조화된 데이터를 필터링하는 데 사용됨. 예를 들어 “등록 시간이 2020년에서 2021년 사이의 데이터나 데이터의 상태 값이 삭제가 안 된 데이터” 와 같이 문서의 score 가 필요없는 데이터 형태를 필터링하는데 사용
filter 문은 자동으로 캐싱하여 성능을 향상시킴
query 와 filter 비교표
Query Filter 검색 결과 관련성 Yes or No 검색 범위 전문 검색 주어진 질의에 해당하는 정확한 값 캐시 여부 No Yes 관련성 점수 계산 Yes No 예)
GET /cn-test-idx/_search { "query": { "bool": { "must": [ { "match": { "kor_contents": "자비스" } }, { "match": { "kor_contents": "엔진" } } ], "filter": [ { "term": { "keyword_field": "2번" } }, { "range": { "created_date": { "gte": "2020-12-01 00:00:00" } } } ] } } }
GET /cn-test-idx/_search { "query": { "bool": { "should": [ { "match": { "kor_contents": "자비스" } }, { "match": { "kor_contents": "여러" } } ], "minimum_should_match": 1, "filter": [ { "term": { "keyword_field": "1번" } }, { "range": { "created_date": { "gte": "2020-12-01 00:00:00" } } } ] } } }
- bool 하위 두 개의 match 절은 query 문을 사용하므로 각 문서가 얼마나 잘 알치하는 score 를 매기는 데 사용됨
- filter 하위의 term 과 range 절은 filter 문에서 사용되므로 위 조건에 일치하는 문서는 score 에 영향을 미치지 않고 결과를 반환함
'내가 공부하고 싶은 IT > 지식정리' 카테고리의 다른 글
Elasticsearch term & match (0) 2023.01.01 Elasticsearch bool 쿼리 (0) 2023.01.01 Elasticsearch Inverted Index 의 이해 (0) 2022.12.25 Elasticsearch 분석기 테스트 (0) 2022.12.25 Elasticsearch 분석기 (0) 2022.12.25 - query