桶在复合聚合中排序?

问题描述

如何在复合聚合中对存储桶进行排序?

我需要使用Bucket排序进行复合聚合。

我尝试使用聚合排序。 我已经尝试过复合聚合。

解决方法

我认为这个问题是您先前的question的延续,因此被认为是相同的用例

您需要使用作为父管道的Bucket sort aggregation 对其父多桶的桶进行排序的聚合 聚合。并且,请参阅composite aggregation上的此文档以了解更多信息。

添加包含索引数据,映射,搜索查询和搜索结果的工作示例

索引映射:

{
  "mappings":{
    "properties":{
      "user":{
        "type":"keyword"
      },"date":{
        "type":"date"
      }
    }
  }
}

索引数据:

{
  "date": "2015-01-01","user": "user1"
}
{
  "date": "2014-01-01","user": "user2"
}
{
  "date": "2015-01-11","user": "user3"
}

搜索查询:

可以设置size parameter来定义多少个复合存储桶 应该退货。每个复合桶都被视为一个 存储桶,因此将大小设置为10将返回前10个复合 从值源创建的存储桶。响应包含 包含值的数组中每个复合存储桶的值 从每个值源中提取。默认值为10。

{
  "size": 0,"aggs": {
    "my_buckets": {
      "composite": {
       "size": 3,<-- note this
        "sources": [
          {
            "product": {
              "terms": {
                "field": "user"
              }
            }
          }
        ]
      },"aggs": {
        "mySort": {
          "bucket_sort": {
            "sort": [
              {
                "sort_user": {
                  "order": "desc"
                }
              }
            ]
          }
        },"sort_user": {
          "min": {
            "field": "date"
          }
        }
      }
    }
  }
}

搜索结果:

"aggregations": {
    "my_buckets": {
      "after_key": {
        "product": "user3"
      },"buckets": [
        {
          "key": {
            "product": "user3"
          },"doc_count": 1,"sort_user": {
            "value": 1.4209344E12,"value_as_string": "2015-01-11T00:00:00.000Z"
          }
        },{
          "key": {
            "product": "user1"
          },"sort_user": {
            "value": 1.4200704E12,"value_as_string": "2015-01-01T00:00:00.000Z"
          }
        },{
          "key": {
            "product": "user2"
          },"sort_user": {
            "value": 1.3885344E12,"value_as_string": "2014-01-01T00:00:00.000Z"
          }
        }
      ]
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...