span_not 쿼리

span_not 쿼리

span_not 쿼리는 다른 span 쿼리와 겹치는 스팬을 제외해요. 제외된 스팬 앞이나 뒤의 특정 거리 안에서는 일치가 발생할 수 없도록 거리를 지정할 수도 있습니다.

예를 들어 span_not 쿼리를 사용해 다음을 할 수 있어요.

  • 특정 구 안에 나타날 때를 제외하고 용어 찾기
  • 특정 용어 근처에 있을 때를 제외하고 스팬 매치하기
  • 다른 패턴의 특정 거리 안에서 발생하는 일치 제외하기

출처: 문서

본문

예제 (Example)

이 섹션의 예제를 실행하려면 설정(setup) 단계를 완료하세요.

다음 쿼리는 "dress"라는 단어를 검색하되, "dress shirt"라는 구 안에 나타날 때는 제외해요.

GET /clothing/_search
{
  "query": {
    "span_not": {
      "include": {
        "span_term": {
          "description": "dress"
        }
      },
      "exclude": {
        "span_near": {
          "clauses": [
            {
              "span_term": {
                "description": "dress"
              }
            },
            {
              "span_term": {
                "description": "shirt"
              }
            }
          ],
          "slop": 0,
          "in_order": true
        }
      }
    }
  }
}

이 쿼리는 "dress"라는 단어("Beautiful long dress…")를 포함하므로 문서 2를 매치해요. 문서 1은 제외되는 "dress shirt"라는 구를 포함하므로 매치되지 않아요. 문서 3과 4는 "dress" 단어의 변형("dressed"와 "dresses")을 포함하고 쿼리가 원본 필드를 검색 중이므로 매치되지 않습니다.

파라미터 (Parameters)

다음 표는 span_not 쿼리가 지원하는 모든 최상위 파라미터를 나열해요.

  • include (Object): 일치를 찾고 싶은 span 쿼리예요. 필수예요.
  • exclude (Object): 일치가 제외되어야 하는 span 쿼리예요. 필수예요.
  • pre (Integer): exclude 스팬이 include 스팬 앞의 지정된 토큰 위치 수 안에 나타날 수 없음을 지정해요. 선택 사항이며 기본값은 0이에요.
  • post (Integer): exclude 스팬이 include 스팬 뒤의 지정된 토큰 위치 수 안에 나타날 수 없음을 지정해요. 선택 사항이며 기본값은 0이에요.
  • dist (Integer): pre와 post를 모두 같은 값으로 설정하는 것과 동등해요. 선택 사항이에요.

더 알아보기 (Learn more)