ElasticSearch 聚合结果排序
ElasticSearch 聚合结果排序
简单的指标聚合结果并根据聚合结果排序如下
以接口id聚合,以平均响应时间排序
{ "size": 0, "aggs": { "api": { "terms": { "field": "api.id", "order": { "reponseTime": "asc" }, "size": 10 }, "aggs": { "reponseTime": { "sum": { "field": "response.time" } }, "requestTime": { "sum": { "field": "requestTime.time" } }, "complexTime": { "bucket_script": { "buckets_path": { "requestTime": "requestTime", "reponseTime": "reponseTime" }, "script": "params.requestTime / params.reponseTime" } } } } } }
复杂的指标聚合结果计算后再根据计算结果进行排序如下
想当然写法,其实不行,会报以下错误
The provided aggregation [complexTime] either does not exist, or is a pipeline aggregation and cannot be used to sort the buckets.
{ "size": 0, "aggs": { "api": { "terms": { "field": "api.id", "order": { "complexTime": "asc" }, "size": 10 }, "aggs": { "reponseTime": { "sum": { "field": "response.time" } }, "requestTime": { "sum": { "field": "requestTime.time" } }, "complexTime": { "bucket_script": { "buckets_path": { "requestTime": "requestTime", "reponseTime": "reponseTime" }, "script": "params.requestTime / params.reponseTime" } } } } } }
参考以下页面得到,解决方案
https://github.com/elastic/elasticsearch/issues/8486
https://github.com/elastic/elasticsearch/issues/32153
{ "size": 0, "aggs": { "api": { "terms": { "field": "api.id" }, "aggs": { "reponseTime": { "sum": { "field": "response.time" } }, "requestTime": { "sum": { "field": "requestTime.time" } }, "complexTime": { "bucket_script": { "buckets_path": { "requestTime": "requestTime", "reponseTime": "reponseTime" }, "script": "params.requestTime / params.reponseTime" } }, "sort": { "bucket_sort": { "sort": [ { "complexTime": { "order": "asc" }, "requestTime.total": { "order": "asc" } } ], "size": 10 } } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律