我基本上需要根据orderId对结果进行分组,并根据修改的时间获取每个订单的最新记录。 我使用热门命中并将大小限制为1来完成此操作,我能够获得最新修改时间的记录。 我无法做的是: 我想根据订单状态(如已处理,已发货等)对此热门点击聚合的结果进行分组,并获取每个州的计数。
所以我期待这样的事情: { 状态:处理 数:2 } { 状态:进程内, 数:4 }
我的聚合是:
"aggregations":{
"aggs": {
"terms": {
"field": "orderId"
},
"aggs": {
"top_hits_modifiedTime": {
"top_hits": {
"sort": [
{
"modifiedTime": {
"order": "desc"
}
}
],
"size" : 1
}
}
}
}}
答案 0 :(得分:0)
是的,可能是因为我遇到了同样的问题,所以我在嵌套聚合中提出了一种解决方案。在此,我们可以在modifiedTime
上添加最大聚合的并行聚合。然后根据您添加的最大聚合对其进行排序。您只需要根据您在第一级上的汇总来调整订单对帐单即可。
通过这种方法,您将在ModifyedTime之前获得热门歌曲排行。热门之后,您将基于与max
聚合平行的top_hits
聚合对所有存储桶进行排序
请查看以下查询:
{
"aggregations": {
"aggs": {
"terms": {
"field": "orderId",
"order": {
"max_modifiedTime": "asc"
}
},
"aggs": {
"top_hits_modifiedTime": {
"top_hits": {
"sort": [
{
"modifiedTime": {
"order": "desc"
}
}
],
"size": 1
}
},
"max_modifiedTime": {
"max": {
"field": "modifiedTime"
}
}
}
}
}
}
希望这可以解决您的问题。请尝试让我知道是否对您来说还好。