티스토리 뷰
여러 유형의 쿼리를 복합적으로 사용할 때 사용 하는 쿼리로 다음과 같은 유형이 있습니다.
- bool : 항목 내 쿼리에 일치하는 항목이 있을 때 검색
- boosting : 검색 결과의 가중치를 높이기 위한 검색
- constant_score : filter query를 감싸서 매칭되는 모든 문서에 대해 boost parameter value와 동일한 relevance score를 반환합니다. 이를 통해 검색 결과의 정확도를 높일 수 있습니다
- dis_max : 루씬의 DisjunctionMaxQuery에서 따온 용어로 예를 들어 멀티 키워드 검색을 수행 시 여러 필드에서 검색을 수행하게 되는 조건에서 멀티 키워드의 키워드와 동일한 키워드의 score를 더욱 높이 평가 하는 방식
- function_score : 검색 결과의 정확도를 높이기 위해 사용하며, 이를 통해 검색 결과의 relevance score를 조정하고, 특정 필드의 중요도를 높이거나 낮출 수 있습니다.
자세한 학습은 참고 사이트을 활용하고 여기에서는 bool query에 대해서 간단히 기술합니다.
참고 : https://www.elastic.co/guide/en/elasticsearch/reference/7.17/compound-queries.html
1. bool query
query context와 filter context를 혼합해서 사용할 수 있습니다.
항목 | 설명 | 실행 | 스코어링 | 캐싱 |
must | 항목 내 쿼리에 일치하는 문서 검색 - 복수의 쿼리를 실행하면 AND 연산 |
query context | O | X |
filter | 항목 내 쿼리에 일치하는 문서 검색 - 쿼리를 실행하여 '예/아니요' 형식의 필터 컨텍스트를 수행 |
filter context | X | O |
should | 검색 결과에 포함될 수 있는 조건을 지정하여 일치하는 문서 검색 - 단독으로 사용 시 쿼리를 실행하여 참인 도큐먼트 - 복수의 쿼리를 실행하면 OR 연산 - 다른 타입과 같이 사용할 경우 스코어에만 활용 |
query context | O | X |
must_not | 항목 내 쿼리에 일치하지 않는 문서 검색 - 다른 타입과 같이 사용할 경우 도큐먼트에서 제외 |
filter context | X | O |
예) title 필드에 가덕이 있고. createdtime 필드의 값이 지정한 조건에 만족하는 정보 검색
curl --location --request GET 'https://localhost:9200/tourlist/_search?pretty=null' \
--header 'Content-Type: application/json' \
--data '{
"query": {
"bool": {
"must": {
"match": {
"title" : "가덕"
}
},
"filter": {
"range": {
"createdtime" : {
"lte" : "20221206000000"
}
}
}
}
}
}'
2. 패턴 검색
패턴 검색은 많은 리소스를 사용하기 때문에 권장하지 않지만 필요할 때 효율적으로 사용하면 됩니다. 와일드카드 쿼리와 정규식 쿼리
- 와일드카드 쿼리
- *, ?라는 두 가지 기호를 사용
- * : 공백까지 포함하여 글자 수에 상관없이 모두 문자를 매칭
- ?: 오직 한 문자만 매칭할 수 있다.
- 정규식 쿼리
- ? *, ., +, ?, (), []를 사용
- *: 앞 문자와 같은 문자가 0번, 혹은 여러 번 반복되면 매칭되었다고 판단
- 점(.) : 하나의 문자를 의미하고 어떤 문자가 와도 상관없이 매칭되었다고 판단
- + : 앞 문자와 같은 문자가 한 번 이상 반복되면 매칭되었다고 판단.
- ? : 앞 문자와 같은 문자가 0번 혹은 한 번 나타나면 매칭되었다고 판단
- () : 그룹핑하여 반복되는 문자들을 매칭
- [] : 클래스 화하여 특정 범위의 문자들을 매칭.
'ElasticSearch' 카테고리의 다른 글
ElasticSearch Query - Aggregation (0) | 2023.09.02 |
---|---|
ElasticSearch Query DSL - match, term (0) | 2023.08.30 |
검색 API (0) | 2023.08.29 |
Elasticsearch 문서 색인 / 조회 (0) | 2023.08.29 |
Elasticsearch 연동 (0) | 2023.08.15 |