ElasticSearch:给定一个文档和一个查询,相关性分数是多少?

ElasticSearch: given a document and a query, what is the relevance score?

一旦在 ElasticSearch 上执行查询,就会为每个检索到的文档计算相关性 _score。 给定一个特定的文档(例如通过文档 ID)和一个特定的查询,我想看看它是什么 _score?

一种方法可能是查询 ES,检索所有命中的文档,然后在所有检索到的文档中查找所需的文档以查看其得分。

我想应该有更有效的方法来做到这一点。给定一个查询和一个文档 ID,它的 _score 是多少?

我正在使用 ElasticSearch 7.x

PS:我需要这个来学习排序场景(创建我的判断列表)。实际上,我有一个复杂的查询,它是根据不同字段的各种 shouldmust 创建的。我的主要要求是to get the score value for each individual sub-query,似乎没有解决方案。我想了解这个复杂查询的哪一部分更有用,哪一部分没那么有用。我想出的唯一方法是分别执行每个子查询以获得分数,但我不想实际执行该查询只是询问该子查询的特定文档的分数是多少。

文档的评分不仅与索引中的文档和所有其他文档相关,而且还取决于各种因素,例如:

    默认情况下,
  1. _score 是按分片而不是索引计算的,但您可以通过在查询中使用 DFS Query Then Fetch 参数来更改此行为。有关 this official blog.
  2. 的更多信息
  3. 是否在索引或查询时应用了任何提升(index time is deprecated from 5.X)。
  4. 除了默认的 ES 评分算法外,还使用了任何自定义评分函数(tf/idf in old versions) and BM25 in the latest versions.

编辑:根据其他受人尊敬的社区成员的评论,改写以下声明:

为了回答您的问题,使用 _explain API,您可以了解 Elasticsearch 如何计算查询和特定文档的分数解释。这可以就文档是否匹配特定查询提供有用的反馈。