我想根据顶部命中聚合中第一个元素拥有的属性从术语聚合中订购存储桶。
我的尽力而为查询看起来像这样(语法错误):
{
"aggregations": {
"toBeOrdered": {
"terms": {
"field": "parent_uuid",
"size": 1000000,
"order": {
"topAnswer._source.id": "asc"
}
},
"aggregations": {
"topAnswer": {
"top_hits": {
"size": 1
}
}
}
}
}
}
有谁知道如何做到这一点?
示例:
{
"a":1,
"b":2,
"id":4
}
{
"a":1,
"b":3,
"id":1
}
{
"a":2,
"b":4,
"id":3
}
按“a”分组并按“id”(desc)排序存储桶并对“b”(desc)上的热门命中进行排序会给出:
{2:{
"a":2,
"b":4,
"id":3
},1:{
"a":1,
"b":3,
"id":1
}}
答案 0 :(得分:0)
您可以使用以下查询执行此操作。我们的想法是为每个parent_uuid
广告管理系统显示第一个具有最小id
值的热门排名,并根据最小parent_uuid
值对id
广告排序进行排序,并使用{ {1}}子聚合。
min
尝试一下,然后报告这是否适合您。