[ElasticSearch] 검색 쿼리 (2)

Woong·2022년 10월 7일
0

ElasticSearch

목록 보기
12/21

논리 쿼리 (bool query)

  • must : 쿼리 결과가 참인 document
    • 여러 개의 쿼리에 대해 AND 연산
  • must_not : 쿼리 결과가 거짓인 document
    • 검색 결과에서 제외하는데 사용
  • should 쿼리 결과가 참인 document
    • 여러 쿼리에 대해선 OR 연산
  • filter : 쿼리 실행시 필터 컨텍스트 수행
    • 유사도 스코어에는 영향 없음

패턴 검색

  • ※ 기호가 와일드카드와 정규식에서 의미가 다르다

와일드카드 쿼리

  • * : 공백을 포함하여, 글자수 무관 모든 문자 매칭

  • ? : 1개 문자만 매칭

  • ex) 와일드카드 패턴 검색 예제

    • M과 r 사이에 1글자, r 뒤엔 모든 문자 매칭
GET test_index/_search
{
  "_source" : "full_name"
  "query" : {
    "wildcard": {
      "fullname": "M?r*"
    }
  }
}  

정규식 쿼리

  • . : 1개 문자
  • + : 앞 문자와 같은 문자가 한번 이상 반복
  • * : 앞 문자와 같은 문자가 0번 이상 반복
  • ? : 앞 문자와 같은 문자가 0번 or 1번 반복
  • () : 문자를 그룹핑하여, 위 연산자들의 반복되는 문자열을 매칭
    • 다른 기호와 혼합하여 사용
    • ex) (aabb)+cd : aabb 가 한번 이상 반복후 cd가 있으면 매칭
    • (..) : 어떤 문자이든 2개 문자가 있으면 매칭
  • [] : 문자를 클래스화하여 문자 매칭
    • ex) [ab] : a 혹은 b가 있으면 매칭
    • ex) [a-z] : a~z 사이의 문자가 있으면 매칭
  • ex) 정규식 쿼리 예제
    • Mar 뒤에 1개 문자 매칭
GET test_index/_search
{
  "_source" : "full_name"
  "query" : {
    "regexp": {
      "fullname": "Mar."
    }
  }
}  

0개의 댓글