span_multi 쿼리

span_multi 쿼리

span_multi 쿼리는 다중 용어 쿼리(wildcard, fuzzy, prefix, range, regexp 같은)를 span 쿼리로 감쌀 수 있게 해줘요. 이렇게 하면 더 유연한 매칭 쿼리를 다른 span 쿼리 안에서 사용할 수 있습니다.

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

  • 다른 용어 근처에서 공통 접두어를 가진 단어 찾기
  • 스팬 안에서 단어의 fuzzy 변형 매치하기
  • span 쿼리에서 정규 표현식 사용하기

span_multi 쿼리는 잠재적으로 많은 용어를 매치할 수 있어요. 과도한 메모리 사용을 피하려면 다음을 할 수 있습니다.

  • 다중 용어 쿼리의 rewrite 파라미터 설정하기
  • top_terms_* rewrite 방식 사용하기
  • span_multi를 prefix 쿼리에만 사용한다면 text 필드에 index_prefixes 옵션을 활성화하는 것도 고려해 보세요. 그러면 해당 필드의 모든 prefix 쿼리가 인덱싱된 접두어를 매치하는 단일 용어 쿼리로 자동 다시 쓰여져요.

출처: 문서

본문

예제 (Example)

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

span_multi 쿼리는 다음 문법을 사용해 prefix 쿼리를 감싸요.

"span_multi": {
  "match": {
    "prefix": {
      "description": {
        "value": "flutter"
      }
    }
  }
}

다음 쿼리는 서로 최대 5단어 안에 있는 "sleeve"의 모든 형태 근처에서 "dress"로 시작하는 단어를 검색해요.

GET /clothing/_search
{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_multi": {
            "match": {
              "prefix": {
                "description": {
                  "value": "dress"
                }
              }
            }
          }
        },
        {
          "field_masking_span": {
            "query": {
              "span_term": {
                "description.stemmed": "sleev"
              }
            },
            "field": "description"
          }
        }
      ],
      "slop": 5,
      "in_order": false
    }
  }
}

두 문서 모두 "dress"와 "long"이 최대 거리 안에 나타나므로, 이 쿼리는 문서 1("Long-sleeved dress…")과 문서 4("…dresses with long fluttered sleeves…")를 매치해요.

응답:

{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1.7590723,
    "hits": [
      {
        "_index": "clothing",
        "_id": "1",
        "_score": 1.7590723,
        "_source": {
          "description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
        }
      },
      {
        "_index": "clothing",
        "_id": "4",
        "_score": 0.84792376,
        "_source": {
          "description": "A set of two midi silk shirt dresses with long fluttered sleeves in black. "
        }
      }
    ]
  }
}

파라미터 (Parameters)

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

  • match (Object): 감쌀 다중 용어 쿼리요(prefix, wildcard, fuzzy, range 또는 regexp일 수 있음).

더 알아보기 (Learn more)