弹性搜索中的条件排序

Conditional sorting in Elastic search

我正在做es的排序。 我有两列“分数”和“范围”。所以我想对记录进行排序,首先我将获得得分为 0 的所有记录,然后按范围排序。我在 ES 上找不到它的任何文档。

好像我有记录
A 得分为 0,范围为 7
B,得分 1,范围 2
C,得分 0,范围 7
D,得分 2,范围 1

所以我想要像 A、C、D、B 这样的结果 谢谢

我建议使用 script-based sorting。该脚本的想法是首先使用 Score = 0 return 文档,如果 Score > 0 脚本使用 Range 值进行排序:

GET index/_search
{
    "sort" : {
        "_script" : {
            "type" : "number",
            "script" : {
                "lang": "painless",
                "source": "doc['Score'].value == 0 ? 0 : doc['Range'].value"
            },
            "order" : "asc"
        }
    }
}