반응형
추천 쿼리
- match 쿼리
- 문서의 필드에 설정해둔 analyzer를 사용하여 검색어의 토큰을 바탕으로 검색하는 가장 많이 사용되는 쿼리. - match_phrase 쿼리
- 거의 사용할 필요는 없겠지만 검색어의 순서가 중요한 경우에 사용. 가령 “아이폰13” 검색 시 “13 아이폰” 문자열이 담긴 문서를 검색하고 싶지 않을 때. - multi_match 쿼리
- 두 개 이상의 필드에 match 쿼리가 가능하므로 “제목+본문” 필터를 걸어 검색하는경우에 유용함. - range 쿼리
- date 등 gte와 lte를 걸어 특정값 범위에 있는 문서를 검색할 때 유용. - bool 쿼리
- query context(score값 존재)인지 filter context인지에 따라 must/should절과filter/must_not절 하위에 쿼리를 담아 조합함.- 가령 must에는 match를, filter에는 range 쿼리를 하위로 구성하여 bool 쿼리가 가능.(range 쿼리를must 하위에 넣어도 검색은 가능하지만 scoring 과정에서 속도가 느림).
- must_not절을 통해 개인정보나 기업비밀 등 보안에 민감한 내용의 문서를 검색하지 않도록 구성 가능.(filter context이므로 score 계산을 하지 않아 문서 캐싱됨)
- should를 must와 함께 설정하여 should절의 검색어가 포함된 문서의 score를 높게 만들 수 있음.(minimum_should_match 옵션을 통해 검색어와 적어도 하나 이상의 일치하는 결과를 반환하게 설정도가능)
비추천 쿼리
- query_string 쿼리
- and나 or 등 검색어 간 연산이 필요할 때 사용하지만 match나 multi_match 쿼리와 동일하게 동작 가능. 스코어링을 하지 않고 검색 성능도 좋지 않으므로 비추천 - term 쿼리
- 필드에 어떤 analyzer가 토큰을 만드는지 이해해야만 정확한 term 쿼리 사용이 가능. 가령StandardAnalyzer가 적용된 index에는 실제 본문에 Linux 단어가 있다하더라도 소문자 linux가inverted index의 token으로 존재함. 따라서 term 쿼리로 Linux 문자열을 검색하면 검색 결과가 나오지않게 됨. -> match 쿼리 대체 - wildcard 쿼리
- 모든 inverted index를 하나하나 확인하여 검색 속도가 느리며 문서의 개수가 늘어날수록 검색 결과도 선형적으로 증가 -> match 쿼리 대체
반응형
'Data Engineering' 카테고리의 다른 글
[ELK] Elasticsearch 클러스터 트러블 슈팅 및 모니터링 (2) | 2023.05.05 |
---|---|
[ELK] Container 환경의 Elasticsearch에 대해 알아두면 좋은 것들 (0) | 2023.04.08 |
[Data Analyst] Prometheus & Grafana 이해와 활용 (오픈소스 모니터링 시스템) (0) | 2021.09.10 |
댓글