bucket排序?

zsbz8rwp  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(302)

如何在复合聚合中进行桶排序?
我需要用桶排序进行复合聚合。
我试过用聚合排序。我试过复合聚合。

kyxcudwk

kyxcudwk1#

我认为这个问题,是你之前问题的延续,所以考虑了相同的用例
您需要使用bucket sort aggregation,它是一个父管道聚合,对其父多bucket聚合的bucket进行排序。请参阅有关复合聚合的文档以了解更多信息。
添加索引数据、Map、搜索查询和搜索结果的工作示例
索引Map:

{
  "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参数来定义应该返回多少个复合bucket。每个复合bucket都被视为单个bucket,因此将size设置为10将返回从值源创建的前10个复合bucket。响应包含从每个值源提取的值的数组中每个复合bucket的值。默认为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"
          },
          "doc_count": 1,
          "sort_user": {
            "value": 1.4200704E12,
            "value_as_string": "2015-01-01T00:00:00.000Z"
          }
        },
        {
          "key": {
            "product": "user2"
          },
          "doc_count": 1,
          "sort_user": {
            "value": 1.3885344E12,
            "value_as_string": "2014-01-01T00:00:00.000Z"
          }
        }
      ]
    }

相关问题