span_containing 쿼리
span_containing 쿼리
span_containing 쿼리는 더 큰 텍스트 패턴(구나 단어 집합처럼)이 그 경계 안에 더 작은 텍스트 패턴을 포함하는 일치 항목을 찾아요. 단어나 구를 찾되, 특정 더 큰 컨텍스트 안에 나타날 때만 찾는다고 생각하면 돼요.
예를 들어 span_containing 쿼리를 사용해 다음과 같은 검색을 수행할 수 있어요.
- "quick"이라는 단어를 찾되, fox와 behavior를 모두 언급하는 문장 안에 나타날 때만 찾기
- 특정 용어가 문서의 어디가 아니라 다른 용어의 컨텍스트 안에 나타나도록 보장하기
- 더 큰 의미 있는 구 안에 나타나는 특정 단어 검색하기
출처: 문서
본문
예제 (Example)
이 섹션의 예제를 실행하려면 설정(setup) 단계를 완료하세요.
다음 쿼리는 서로 5단어 안에 있는 "silk"와 "dress"라는 단어(반드시 그 순서일 필요 없음)를 포함하는 더 큰 스팬 안에 나타나는 "red"라는 단어의 발생을 검색해요.
GET /clothing/_search
{
"query": {
"span_containing": {
"little": {
"span_term": {
"description": "red"
}
},
"big": {
"span_near": {
"clauses": [
{
"span_term": {
"description": "silk"
}
},
{
"span_term": {
"description": "dress"
}
}
],
"slop": 5,
"in_order": false
}
}
}
}
}
이 쿼리는 다음 이유로 문서 1을 매치해요.
- "silk"와 "dress"가 서로 최대 5단어 안에 나타나는 스팬("…dress in red silk…")을 찾아요. "silk"와 "dress"는 서로 2단어 이내에 있어요(둘 사이에 2개 단어가 있음).
- 이 더 큰 스팬 안에서 "red"라는 용어를 찾아요.
응답:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1.1577396,
"hits": [
{
"_index": "clothing",
"_id": "2",
"_score": 1.1577396,
"_source": {
"description": "Beautiful long dress in red silk, perfect for formal events."
}
}
]
}
}
little과 big 파라미터 모두 모든 유형의 span 쿼리를 포함할 수 있어, 필요할 때 복잡한 중첩 span 쿼리를 만들 수 있어요.
파라미터 (Parameters)
다음 표는 span_containing 쿼리가 지원하는 모든 최상위 파라미터를 나열해요. 모든 파라미터는 필수예요.
- little (Object): big 스팬 안에 포함되어야 하는 span 쿼리예요. 더 큰 컨텍스트 안에서 검색하려는 스팬을 정의해요.
- big (Object): little 스팬이 나타나야 하는 경계를 정의하는 포함 span 쿼리예요. 검색의 컨텍스트를 설정해요.