elasticsearch中span_containing和span_within查询之间有什么区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch中span_containing和span_within查询之间有什么区别?相关的知识,希望对你有一定的参考价值。
文件说
span_containing:
big和little子句可以是任何span类型查询。返回包含来自big的匹配跨度。
span_within:
big和little子句可以是任何span类型查询。返回包含在大的内容的匹配跨度。
至于哪些文档与查询匹配,没有区别。区别在于哪个跨度匹配。
- span_containing匹配大。
- span_within匹配很少。
该查询将从匹配范围中获得提升,因此span_containing将从big获得提升,而span_within将从匹配的小提升中得到提升。
如果您的span_within或span_containing是考虑匹配范围位置的另一个span查询的一部分,则差异也会变得相关。
例如,假设您有一些文字:
Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。
而你的span_containing / within与前五个术语相匹配,很少匹配“ipsum”。如果你将它包装在span_near中,那么外部span_near的斜率将从span_containing的大边界和span_within的little(“ipsum”)边界取得。
“amet”(大的结尾)和“consectetur”之间的距离≤1,因此这将匹配文本:
"span_near": {
"clauses": [
"span_containing" : {
"little" : {
"span_term" : { "field" : "ipsum" }
},
"big" : {
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "lorem" } },
{ "span_term" : { "field" : "amet" } }
],
"slop" : 5,
"in_order" : true
}
}
},
{ "span_term" : { "field" : "consectetur" } }
],
"slop": 1,
"in_order": true
}
但是“ipsum”和“consectetur”之间的距离是> 1,所以这不会:
"span_near": {
"clauses": [
"span_within" : {
"little" : {
"span_term" : { "field" : "ipsum" }
},
"big" : {
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "lorem" } },
{ "span_term" : { "field" : "amet" } }
],
"slop" : 5,
"in_order" : true
}
}
},
{ "span_term" : { "field" : "consectetur" } }
],
"slop": 1,
"in_order": true
}
以上是关于elasticsearch中span_containing和span_within查询之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:如何使用 shell 脚本来写入数据到 Elasticsearch 中
ElasticSearch(十六):在docker中构建Elasticsearch集群
Elasticsearch如何在 Elasticsearch 中轻松编写脚本