[英]Is it possible to group results by a key with Elasticsearch aggregations?
[英]Getting only aggregations results in elasticsearch
我正在做这样的聚合:
{
"size":0,
"aggs":
{
"my_aggs":
{
"terms":
{
"field":"my_field"
}
}
}
}
我只想得到聚合结果。 因此,当我像下面这样设置size=0
,它会给出错误-后来了解到这是我想要的结果数量(聚合)。 那么,我怎样才能做到这一点以只获得聚合结果(没有命中结果文档)
AbstractAggregationBuilder aggregationBuilder = AggregationBuilders
.terms("my_aggs")
.field("my_field")
.size(0) //how to set size for my purpose?
.order(BucketOrder.key(true));
此外,如果我得到数千个聚合结果,此查询是否返回所有结果? 或适用于其默认的 10 大小? 如果没有,我怎么知道我应该设置聚合结果的大小。
编辑我添加我的聚合是这样的:
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withIndices(indexName)
.withTypes(typeName)
.withQuery(boolQueryBuilder)
.addAggregation(aggregationBuilder)
.build();
请帮忙。
您在 SearchRequest 实例上而不是在聚合级别上执行此操作:
AbstractAggregationBuilder aggregationBuilder = AggregationBuilders
.terms("my_aggs")
.field("my_field")
.order(BucketOrder.key(true));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withIndices(indexName)
.withTypes(typeName)
.withQuery(boolQueryBuilder)
.withPageable(new PageRequest(0, 1)) <--- add this
.addAggregation(aggregationBuilder)
.build();
据我所知,Spring Data ES 不允许您创建大小为 0 的PageRequest
(因此我选择了 1)。 如果这是一个问题,此答案将向您展示如何覆盖该行为。
默认情况下,您的聚合将返回 10 个存储桶,但如果需要,您可以将大小增加到 10000。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.