【发布时间】:2018-08-16 00:39:50
【问题描述】:
这是一个包含 2 个查询的故事。一个返回结果,而另一个不返回。为什么?
返回结果的查询:
{
"index":"my_index",
"type":"places",
"body":{
"from":0,
"size":"12",
"sort":{
"_score":{
"order":"desc"
}
},
"query":{
"function_score":{
"query":{
"bool":{
"must":[
],
"should":[
],
"must_not":[
],
"filter":[
]
}
},
"functions":[
{
"gauss":{
"location":{
"origin":{
"lat":"41.243368",
"lon":"-116.79711"
},
"offset":"0mi",
"scale":"100mi"
}
}
}
],
"score_mode":"sum",
"boost_mode":"sum"
}
}
}
}
不返回结果的查询:
{
"index":"my_index",
"type":"places",
"body":{
"from":0,
"size":"12",
"sort":{
"_score":{
"order":"desc"
}
},
"query":{
"function_score":{
"query":{
"bool":{
"must":[
],
"should":[
{
"terms":{
"region_id":[
32273
],
"boost":2
}
}
],
"must_not":[
],
"filter":[
]
}
},
"functions":[
{
"gauss":{
"location":{
"origin":{
"lat":"41.243368",
"lon":"-116.79711"
},
"offset":"0mi",
"scale":"100mi"
}
}
}
],
"score_mode":"sum",
"boost_mode":"sum"
}
}
}
}
布尔查询只有一个应该从句。
另外,我将分数相加,而不是相乘。
确实,我在索引中没有任何具有指定“region_id”的项目,但是我看不到第一个查询的结果是如何从第二个查询中排除的。 Bool Query 上的 0 分似乎就像一个过滤器。
【问题讨论】:
-
您有 region_id = 32273 的文档吗?
标签: elasticsearch