elasticsearch Elasticsearch“;“促进”;“在内部时不工作”;“过滤器”;
我试图
elasticsearch Elasticsearch“;“促进”;“在内部时不工作”;“过滤器”;,
elasticsearch,
elasticsearch,我试图在某个字段上比在另一个字段上增强匹配 这很好: { "query": { "bool": { "should": [ { "terms": { "boost": 2, "mainField": "foo" }
在某个字段上比在另一个字段上增强
匹配
这很好:
{
"query": {
"bool": {
"should": [
{
"terms": {
"boost": 2,
"mainField": "foo"
}
},
{
"terms": {
"otherField": "foo"
}
}
]
}
}
}
当我在main字段
上看到匹配的文档时,我看到它们的\u分数
达到了预期的2.0
但当我将同一个查询包装在过滤器中时
:
{
"query": {
"bool": {
"filter": [
{
"bool": {
"should": [
{
"terms": {
"boost": 2,
"mainField": "foo"
}
},
{
"terms": {
"otherField": "foo"
}
}
]
}
}
]
}
}
}
所有文档的\u分数为0.0
对于多重匹配
也会发生同样的情况。它本身(例如在查询
中)工作正常,但在bool+过滤器
中不工作
有人能解释为什么会这样吗?由于我的应用程序编写查询的方式,我需要使用一个过滤器
一些上下文也可能有帮助:我试图返回在mainField
或otherField
上匹配的文档,但首先对在mainField
上匹配的文档进行排序,因此我认为boost
将是最合适的选择。但是如果有更好的方法,请告诉我。过滤器查询总是在过滤器上下文中执行。它将始终返回零分,并且只对文档的过滤起作用
参考本文,了解有关筛选器上下文的更多信息
因此,在第二个查询中,即使应用了boost,您也不会得到2.0的\u分数
,谢谢。有道理。那我有什么选择呢?a) 不使用过滤器,b)不评分,但以其他方式排序?(对b感兴趣,如果可以的话)