node.js - Elasticsearch 中的条件排序

标签 node.js elasticsearch elasticsearch-aggregation

我正在研究es的排序。
我有两列“得分”和“范围”。因此,我想像对记录进行排序一样,首先获得所有得分为0的记录,然后按范围进行排序。我在ES上找不到任何文档。
就像我有记录
A,得分为0,范围为7
B得分1和范围2
C,得分为0,范围为7
D得分2和范围1
所以我想要像A,C,D,B这样的结果
谢谢

最佳答案

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

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

关于node.js - Elasticsearch 中的条件排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62632611/

相关文章:

sql - Sequelize : join two times the same table

java - Spring Boot 应用程序中的 Spring Data Elasticsearch

elasticsearch - 嵌套聚合:如何获取聚合对象的属性

elasticsearch - 如何在Elasticsearch中按小时无天分组文档?

elasticsearch - Elasticsearch multi_match查询不适用于同义词和cross_fields

elasticsearch - 通过聚合计算嵌套文档的数量:elasticsearch

node.js - 如何在类中 stub 所需的模块?

javascript - 设置对象名称?

javascript - Node 包和 Node sass 错误

c# - 在Elasticsearch中执行http放置