elasticsearch Elasticsearch“;“促进”;“在内部时不工作”;“过滤器”;,elasticsearch,elasticsearch" /> elasticsearch Elasticsearch“;“促进”;“在内部时不工作”;“过滤器”;,elasticsearch,elasticsearch" />

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感兴趣,如果可以的话)