본문 바로가기
Data Engineering

[ELK] Elasticsearch 검색 Query 종류 (추천/비추천 패턴)

by newstellar 2023. 6. 3.
반응형

추천 쿼리

  • 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 단어가 있다하더라도 소문자 linuxinverted index token으로 존재함. 따라서 term 쿼리로 Linux 문자열을 검색하면 검색 결과가 나오지않게 . -> match 쿼리 대체

  • wildcard 쿼리
     - 모든 inverted index 하나하나 확인하여 검색 속도가 느리며 문서의 개수가 늘어날수록 검색 결과도 선형적으로 증가 -> match 쿼리 대체
반응형

댓글