Elasticsearch在顶部命中子聚合中的字段之后排序术语聚合桶

时间:2015-10-23 14:55:10

标签: elasticsearch elasticsearch-api

我想根据顶部命中聚合中第一个元素拥有的属性从术语聚合中订购存储桶。

我的尽力而为查询看起来像这样(语法错误):

{
    "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
}}

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询执行此操作。我们的想法是为每个parent_uuid广告管理系统显示第一个具有最小id值的热门排名,并根据最小parent_uuid值对id广告排序进行排序,并使用{ {1}}子聚合。

min

尝试一下,然后报告这是否适合您。