面试题答案
一键面试{
"aggs": {
"order_categories": {
"nested": {
"path": "商品列表"
},
"aggs": {
"categories": {
"terms": {
"field": "商品列表.category"
},
"aggs": {
"price_ranges": {
"range": {
"field": "商品列表.price",
"ranges": [
{ "to": 100 },
{ "from": 100, "to": 200 },
{ "from": 200 }
]
}
},
"sort_by_count": {
"bucket_sort": {
"sort": [
{
"price_ranges._count": {
"order": "desc"
}
}
]
}
}
}
}
}
}
}
}
nested
:因为商品列表是嵌套文档,使用nested
聚合来处理嵌套结构数据。path
指定嵌套文档路径为商品列表
。terms
:在categories
聚合中,按商品列表.category
字段进行分组,得到不同的订单类别。range
:在price_ranges
聚合中,按商品列表.price
字段定义价格区间,这里定义了三个价格区间:小于100,100到200(包含100不包含200),大于等于200。bucket_sort
:在sort_by_count
聚合中,按price_ranges
聚合中的商品数量(_count
)进行降序排列。