본문 바로가기
Tip & Tech/Tech

ELK match와 term 차이 / query와 filter 차이

by 나비와꽃기린 2024. 9. 25.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

match 와 term의 차이

match text 쿼리를 수행하기전에 분석기를 통해 텍스트르 분석한 후 검색을 수행. text 데이터타입을 검색할때 match를 사용.
ex) match로 검색시 질의어가 "this is something" 이고, standard analyzer가 사용되고 있다면
질의어가 this, is, something 으로 쪼개져 역색인 검색이 수행된다.

또한 match 쿼리는 기본적으로 OR로 동작한다.
따라서 위예시처럼 분리된 term 중 this,is,something 중 하나의 term만 일치하더라도 검색결과로 인정된다.
물론 operator로 "AND" 등으로 수정할 수 있다.
 
term keyword 별도의 분석작업을 수행하지않고 입력된 텍스트가 존재하는 문서를 찾음.(지정한 필드의 질의어가 정확히 일치하는 문서를 찾는다)
keyword 데이터타입을 검색할때 term를 사용.
# 정확히 매칭되지 않거나 대소문자가 다를경우 조회되지 않음
POST
[인덱스]/_search { "query": { "term": { "[필드]": "[검색할 키워드]" } } }

 

 

 

필드 설명

must: [필드] AND [컬럼] = [조건]
must_not: [필드] AND [컬럼] != [조건]
should: [필드] OR [컬럼] = [조건]
filter: [필드] [컬럼] IN ( [조건] )

 

 

 

 

Query와 filter 의 차이

  1. Query(쿼리):
    • 쿼리는 주어진 검색 조건에 부합하는 문서를 검색하는 데 사용됩니다.
    • 쿼리는 검색 결과의 점수(score)를 계산하여 각 문서의 관련성을 평가합니다.
    • 쿼리는 검색 결과를 필터링하고 정렬하는 데 사용됩니다.
    • 주요 쿼리 유형으로는 match, term, range, bool 등이 있습니다.
  2. Filter(필터):
    • 필터는 쿼리와 유사하지만 검색 결과의 점수를 계산하지 않습니다.
    • 필터는 주어진 검색 조건에 부합하는 문서를 신속하게 필터링하는 데 사용됩니다.
    • 필터는 캐싱되어 재사용될 수 있기 때문에 반복적으로 사용되는 검색 조건에 효과적입니다.
    • 주요 필터 유형으로는 term, range, bool, exists, missing 등이 있습니다.
주요 차이점은 다음과 같습니다:
  • 결과 점수 계산: 쿼리는 검색 결과의 관련성을 평가하여 점수를 계산하지만, 필터는 결과의 관련성을 평가하지 않고 단순히 문서를 필터링합니다.
  • 캐싱: 필터는 캐싱되어 재사용될 수 있으므로 반복적으로 사용되는 검색 조건에 효과적입니다. 하지만 쿼리는 매번 새로운 결과를 계산해야 하므로 캐싱되지 않습니다.
  • 연산 비용: 쿼리는 결과 점수를 계산하는 추가적인 연산이 필요하므로 일반적으로 필터보다 더 많은 연산 비용이 소요됩니다. 따라서 단순한 조건 검색에는 필터를 사용하는 것이 더 효율적입니다.
일반적으로 결과의 점수가 필요하지 않고 단순한 조건 검색이 필요한 경우에는 필터를 사용하고, 결과의 점수가 필요하거나 더 복잡한 검색 조건이 필요한 경우에는 쿼리를 사용하는 것이 좋습니다.

 

text와 keywd의 차이보통 full text 검색에 사용할 문자열필드를 text로, 집계나 정렬에 사용할 문자열 필드를 keyword로 설정한다.