繁体   English   中英

在 elasticsearch 中只获取聚合结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM