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