如何在复合聚合中进行桶排序?我需要用桶排序进行复合聚合。我试过用聚合排序。我试过复合聚合。
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" } } ] }
1条答案
按热度按时间kyxcudwk1#
我认为这个问题,是你之前问题的延续,所以考虑了相同的用例
您需要使用bucket sort aggregation,它是一个父管道聚合,对其父多bucket聚合的bucket进行排序。请参阅有关复合聚合的文档以了解更多信息。
添加索引数据、Map、搜索查询和搜索结果的工作示例
索引Map:
索引数据:
搜索查询:
可以设置size参数来定义应该返回多少个复合bucket。每个复合bucket都被视为单个bucket,因此将size设置为10将返回从值源创建的前10个复合bucket。响应包含从每个值源提取的值的数组中每个复合bucket的值。默认为10。
搜索结果: