排序时 ElasticSearch 分数字段为空

ElasticSeach score field is null when sorting

我已将 sort 条件字段添加到我的 ElasticSearch 查询中。我正在使用 ES 7.14 / Kibana 7.10,并“回退”到文档的分数。根据 docs 我必须使用保留键 _score:

我的 sort 数组字段看起来像

[
                    
    { "update_date": { "order": "desc", "missing" : "_last", "unmapped_type" : "long" } },
    { "release_date": { "order": "desc", "missing" : "_last", "unmapped_type" : "long" } },
    "_score"
]

这工作正常,但在不使用 _score 特殊字段时,我得到 scorenull 值。为什么?在使用sort条件时根本不计算score吗?

是的,您的理解是正确的,应用排序时不会计算排序 到另一个领域。 ES 文档引用如下:

When sorting on a field, scores are not computed. By setting track_scores to true, scores will still be computed and tracked.

因此,如果您想计算分数,则可以通过提供“track_scores”: true 参数来启用。

{
  "track_scores": true,
  "sort" : [
    { "post_date" : {"order" : "desc"} },
    { "name" : "desc" },
    { "age" : "desc" }
  ],
  "query" : {
    "term" : { "user" : "kimchy" }
  }
}