Elasticsearch:constant_score 查询与 bool.filter 查询

Elasticsearch : constant_score query vs bool.filter query

我正在尝试使用 Elasticsearch 获得完全匹配的结果(所以我不关心这里的评分)

我看到有两种方法可以做到这一点:

{
    "query" : {
        "constant_score" : {
            "filter" : {
                "term" : {
                    "exact_match_field" : "hello world !"
                }
            }
        }
    }
}

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "exact_match_field": "hello world !"
        }
      }
    }
  }
}

两者都有效并给我想要的结果。他们之间有什么区别?使用一个与另一个相比有性能优势吗?

(我使用的是 Elasticsearch V 5.6)

谢谢!

恒分查询对任何匹配的文档给出相同的分数,而不管 TF, IDF 等任何评分因素。当您不关心文档是否匹配但只关心文档是否匹配时,可以使用此方法与过滤器不同,是否匹配并给出分数。

一个 constant_score 查询采用一个 boost 参数,当与其他查询结合时,该参数被设置为每个返回文档的分数。默认情况下,提升设置为 1。

如果你有兴趣,下面link会给你更多的见解

https://www.compose.com/articles/elasticsearch-query-time-strategies-and-techniques-for-relevance-part-ii/