Span near 查询
span_near
查询匹配彼此接近的跨度。您可以指定跨度之间的距离以及它们是否需要以特定顺序出现。
例如,您可以使用 span_near
查询来
- 查找彼此在一定距离内出现的词条。
- 匹配单词以特定顺序出现的短语。
- 查找文本中彼此接近的相关概念。
示例
要尝试本节中的示例,请完成设置步骤。
以下查询搜索“sleeve”和“long”以任意顺序相邻出现的任何形式
GET /clothing/_search
{
"query": {
"span_near": {
"clauses": [
{
"span_term": {
"description.stemmed": "sleev"
}
},
{
"span_term": {
"description.stemmed": "long"
}
}
],
"slop": 1,
"in_order": false
}
}
}
该查询匹配文档 1(“Long-sleeved…”)和文档 2(“…long fluttered sleeves…”)。在文档 1 中,单词彼此相邻;在文档 2 中,它们在指定的间隙距离 1
之内(它们之间有 1 个单词)。
响应
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 0.36496973,
"hits": [
{
"_index": "clothing",
"_id": "1",
"_score": 0.36496973,
"_source": {
"description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
}
},
{
"_index": "clothing",
"_id": "4",
"_score": 0.25312424,
"_source": {
"description": "A set of two midi silk shirt dresses with long fluttered sleeves in black. "
}
}
]
}
}
参数
下表列出了 span_near
查询支持的所有顶级参数。
参数 | 数据类型 | 描述 |
---|---|---|
clauses | 一个跨度查询数组,用于定义要匹配的词条或短语。所有指定的词条都必须出现在定义的间隙距离内。必填。 | |
slop | 整数 | 跨度之间不匹配位置的最大数量。必填。 |
in_order | 布尔型 | 跨度是否需要与 clauses 数组中的顺序相同。可选。默认为 false 。 |