一尘不染

聚合列表中的Elasticsearch两级排序

elasticsearch

目前,我正在按文档分数对汇总进行排序,因此大多数相关项在汇总列表中排在首位,如下所示:

{
            'aggs' : {
                'guilds' : {
                    'terms' : {
                        'field' : 'guilds.title.original',
                        'order' : [{'max_score' : 'desc'}],
                        'aggs' : {
                            'max_score' : {
                                'script' : 'doc.score'
                            }
                        }
                    }
                }
            }
        }

我想在JSON中向订单条款订单数组添加另一个排序选项。但是当我这样做时:

{
        'order' : [{'max_score' : 'desc'}, {"_count" : "desc"},
    }

第二种无效。例如,当所有分数均相等时,则应基于查询进行排序,但不起作用。


阅读 251

收藏
2020-06-22

共1个答案

一尘不染

作为对安德烈(Andrei)回答…以多个条件排序聚合的更正,您 必须
创建一个如术语聚合:订单中所示的数组,并且 必须 使用ElasticSearch 1.5或更高版本。

因此,对于Andrei的答案,更正为: "order" : [ { "max_score": "desc" }, { "_count": "desc" } ]

正如安德烈有它,ES不会抱怨,但将 使用“命令”元素中列出的最后一个项目。

2020-06-22