`min_score`不适用于Elasticsearch中的`rescore`

时间:2016-01-12 10:14:57

标签: json elasticsearch min

我希望删除分数低于1的所有文档,但以下查询无效:

curl "http://localhost:9200/megacorp/_search" -d '{
  "min_score": 1,
  "query": {
    "matchAll": {}
  },
  "rescore": {
    "query": {
      "score_mode": "min",
      "rescore_query": {
        "match": {"first_name": "Jane"}
      }
    }
  }
}'

看起来min_scorerescore无效。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你混淆了min_scorerescore的概念。两者都用于不同的目的。

min_score适用于初始查询。在您的情况下,它是match_all查询,因此返回的每个文档的得分均为1,此得分会针对min_score 进行检查,无论是什么rescore确实如此。

rescore用于影响返回文档的scoring(您的初始查询)。它不会影响count结果,只会影响结果的order。因此,即使"match": {"first_name": "Jane"}得分低于1,也会显示出来。同样,如果您使用score_mode: total且总分大于1,但如果原始查询的分数小于1,则不会在结果中显示。

您可以使用explain api了解如何计算得分。最后,如果您想使用scoring,可以查看script_scorefunction score

我希望这可以解除疑问。