是时候用 ES 拯救发际线啦

ElasticSearch查询的语句怎么对聚合过滤分组

Elasticsearch | 作者 Rewardingggg | 发布于2021年08月08日 | 阅读数:1642

目前使用的是 es7.9 版本 现在写的语句如下,不知道是思路不对还是语法不对
 
数据结构:
id 对应一个商品  
时间戳最大作为有效数据

│ id │ status │ @timestamp │ unit_price │
├─────┼────┼────────┼─────────
│1233333-31│ 1 │ "2021-2-3" │ 100 │
├─────┼────┼────────┼─────────
│1233333-31│ 0 │ "2021-2-4" │ 200 │


 
{
.. 查询省略
"aggs":{
"goods_bucket":{
"terms":{
"field":"id.keyword" # 商品主键分桶
"size":1000,
"order":{
"sort_by_time":"desc" #根据最新排序
}
},
"aggs":{
"sort_by_time": {
"max":{
"filed": "@timestamp"
}
},
"aggs":{
"on_sale":{ # 过滤已经出售的
"bucket_selector": {
"bucket_path":{
"goods":"goods_bucket"
},
"script":"param.goods.status=1"
}
},
"aggs":{
"show_list":{
"top_hits":{
"sort":[
{
"unit_price":{ #单价排序
"order": "desc"
}
}
],
"_source":{
....
},
"size": 1
}
},
"r_bucket_paged":{ #分页
"bucket_sort":{
"sort":,
"from":1,
"size":5
}
}
}
}
}
}
}
}
大概想实现以上需求,但是语句执行不过。
已邀请:

要回复问题请先登录注册