스팬(span) 쿼리

스팬(span) 쿼리

span 쿼리를 사용하면 정밀한 위치 기반 검색을 수행할 수 있어요. span 쿼리는 지정된 쿼리 용어의 순서와 근접성을 제어하는 저수준의 특수 쿼리랍니다. 주로 법률 문서와 특허를 검색하는 데 사용돼요.

span 쿼리에는 다음 쿼리 유형이 포함됩니다.

  • Span containing: 안에 더 작은 스팬을 포함하는 더 큰 스팬을 반환해요. span_within 쿼리의 반대예요.
  • Span field masking: 한 필드를 다른 필드처럼 보이게 만들어 span 쿼리가 여러 필드에서 작동하게 해요. 같은 텍스트가 다른 분석기로 인덱싱될 때 유용해요.
  • Span first: 필드 시작 지점부터 지정된 위치 수 안에 나타나는 용어나 구(phrase)를 매치해요.
  • Span multi-term: prefix, wildcard, fuzzy 같은 다중 용어 쿼리가 span 쿼리 안에서 작동하게 해줘요.
  • Span near: 서로 지정된 거리 안에 나타나는 용어나 구를 찾아요. 일치가 특정 순서로 나타나도록 요구하는 것을 지원해요.
  • Span not: 다른 span 쿼리와 겹치는 일치를 제외해요.
  • Span or: 제공된 span 쿼리 중 하나라도 충족하는 문서를 매치해요.
  • Span term: 다른 span 쿼리에서 사용하기 위한 위치 정보를 유지하면서 단일 용어를 매치해요.
  • Span within: 더 큰 스팬으로 둘러싸인 더 작은 스팬을 반환해요. span_containing 쿼리의 반대예요.

출처: 문서

본문

설정 (Setup)

이 섹션의 예제를 실행해 보려면 다음 단계로 예제 인덱스를 구성하세요.

1단계: 인덱스 만들기

먼저 전자상거래 의류 웹사이트용 인덱스를 만들어요. description 필드는 기본 표준 분석기(standard analyzer)를 사용하고, description.stemmed 하위 필드는 어간 추출(stemming)을 위해 english 분석기를 적용해요.

PUT /clothing
{
  "mappings": {
    "properties": {
      "description": {
        "type": "text",
        "analyzer": "standard",
        "fields": {
          "stemmed": {
            "type": "text",
            "analyzer": "english"
          }
        }
      }
    }
  }
}

2단계: 데이터 인덱싱

인덱스에 샘플 문서를 인덱싱해요.

POST /clothing/_doc/1
{
  "description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
}
POST /clothing/_doc/2
{
  "description": "Beautiful long dress in red silk, perfect for formal events."
}
POST /clothing/_doc/3
{
  "description": "Short-sleeved shirt with a button-down collar, can be dressed up or down."
}
POST /clothing/_doc/4
{
  "description": "A set of two midi silk shirt dresses with long sleeves in black. "
}

더 알아보기 (Learn more)