Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用弹性搜索在聚合上滚动_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Aggregation - Fatal编程技术网 elasticsearch,aggregation,Java,elasticsearch,Aggregation" /> elasticsearch,aggregation,Java,elasticsearch,Aggregation" />

Java 使用弹性搜索在聚合上滚动

Java 使用弹性搜索在聚合上滚动,java,elasticsearch,aggregation,Java,elasticsearch,Aggregation,我在我的文档上使用弹性搜索和聚合作为请求。我的聚合是特定字段上的术语聚合 我希望能够得到所有的聚合,但请求只返回我的第10个第一。我尝试使用弹性搜索的滚动,但它应用于请求,而不是聚合,返回的文档滚动良好,但聚合仍然相同 有人有同样的问题吗 以下是我的java请求: SearchResponse response = client.prepareSearch("index").setTypes("type").setQuery(QueryBuilders.matchAllQuery())

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

我希望能够得到所有的聚合,但请求只返回我的第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();
Terms=response.getAggregations().get(“TermsAggr”);
收集桶=terms.getBucket();

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

 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,因为这是最近通过添加到该版本中的。

事实上,我希望拥有所有聚合,而不仅仅是其中的一部分。这在尺寸上是不可能的。顺便说一句,我使用的是ES 1.0.1。在生产中,它当然会增长,但我使用的是500000个项目。这里的问题是,这些项目的数量将增长,因此我不能使用大小方法,因为我不知道在每一时刻我应该收到多少聚合。