求助: ES 聚合查询,使用了 nested,如何再对某个字段排序?

2020-11-27 14:14:56 +08:00
 sniperking1234

查询语句如下面所示

{
    "size": 0,
    "aggs": {
        "tags": {
            "nested": {
                "path": "tags"
            },
            "aggs": {
                "key": {
                    "filter": {
                        "term": {
                            "tags.key": "http.url"
                        }
                    },
                    "aggs": {
                        "values": {
                            "terms": {
                                "field": "tags.value",
                                "size": 100
                            },
                            "aggs": {
                                "rev": {
                                    "reverse_nested": {},
                                    "aggs": {
                                        "duration": {
                                            "avg": {
                                                "field": "duration"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

我想对 duration 这个字段按照平均值从大到小排序,找出前 100 条数据,那么这么排序要加在什么地方呢?

1268 次点击
所在节点    程序员
3 条回复
zsl199512101234
2020-11-27 14:38:09 +08:00
sniperking1234
2020-11-27 14:57:11 +08:00
@zsl199512101234 我试了下,这样写 sort 貌似对有聚合的查询不起作用。
sniperking1234
2020-11-27 15:12:57 +08:00
找到方法了,这么写就可以
{
"size": 0,
"aggs": {
"tags": {
"nested": {
"path": "tags"
},
"aggs": {
"key": {
"filter": {
"term": {
"tags.key": "http.url"
}
},
"aggs": {
"values": {
"terms": {
"field": "tags.value",
"size": 200,
"order": {"rev>duration": "desc"}
},
"aggs": {
"rev": {
"reverse_nested": {},
"aggs": {
"duration": {
"avg": {
"field": "duration"
}
}
}
}
}
}
}
}
}
}
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/729859

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX