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일 수 있음).