繁体   English   中英

使用弹性搜索滚动聚合

[英]Scroll over aggregations with Elastic Search

我在我的文档中使用弹性搜索和聚合作为请求。 我的聚合是特定字段上的术语聚合。

我希望能够获得所有聚合,但请求只返回我的第10个。 我尝试使用弹性搜索滚动,但是它应用于请求而不是聚合,返回的文档滚动得很好,但聚合仍然是相同的。

有没有人有同样的问题?

这是我在java中的请求:

SearchResponse response = client.prepareSearch("index").setTypes("type").setQuery(QueryBuilders.matchAllQuery())
                .addAggregation(AggregationBuilders.terms("TermsAggr").field("aggField")).execute().actionGet();

这是我如何得到桶:

    Terms terms = response.getAggregations().get("TermsAggr");
    Collection<Bucket> buckets = terms.getBuckets();

聚合结果的默认返回大小为10个项目,这就是您只获得10个结果的原因。 您需要将AggregationBuilders对象的size设置为更大的值,以便返回存储桶中的更多或所有值。

 SearchResponse response = client.prepareSearch("index")
      .setTypes("type")
      .setQuery(QueryBuilders.matchAllQuery())
      .addAggregation(AggregationBuilders.terms("TermsAggr")
           .field("aggField").size(100))
      .execute().actionGet();

如果您始终想要返回所有值,则可以设置size(0) 但是,您需要升级到ES 1.1,因为最近通过问题4837将其添加到该版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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