概述
继续跟中华石杉老师学习ES,第43篇
课程地址: https://www.roncoo.com/view/55
官方说明
search-aggregations-bucket-terms-aggregation-order: 戳这里
案例
需求: 按每种颜色的平均销售额降序排序
求 每种颜色的平均销售额
我们先回顾下默认的排序(按照doc_count降序排列)
先来求下: 每种颜色的平均销售额
Step1. 按照颜色划分bucket
GET /tvs/sales/_search { "aggs": { "group_by_color": { "terms": { "field": "color" } } }, "size": 0 }
返回:
Step2. 对每个bucket 继续下钻 求平均价格
GET /tvs/sales/_search { "aggs": { "group_by_color": { "terms": { "field": "color" }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } }, "size": 0 }
按每种颜色的平均销售额升序排序
可以看到 默认的规则是按照 doc_count ,降序排列。 那如果我们想要按照销售额升序排序呢?
只需要
"order": { "avg_price": "asc" }
DSL:
GET /tvs/sales/_search { "aggs": { "group_by_color": { "terms": { "field": "color", "order": { "avg_price": "asc" } }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } }, "size": 0 }