Blb*_*lbl 3 java aggregation elasticsearch
我在我的文档中使用弹性搜索和聚合作为请求.我的聚合是特定字段上的术语聚合.
我希望能够获得所有聚合,但请求只返回我的第10个.我尝试使用弹性搜索滚动,但是它应用于请求而不是聚合,返回的文档滚动得很好,但聚合仍然是相同的.
有没有人有同样的问题?
这是我在java中的请求:
SearchResponse response = client.prepareSearch("index").setTypes("type").setQuery(QueryBuilders.matchAllQuery())
.addAggregation(AggregationBuilders.terms("TermsAggr").field("aggField")).execute().actionGet();
Run Code Online (Sandbox Code Playgroud)
这是我如何得到桶:
Terms terms = response.getAggregations().get("TermsAggr");
Collection<Bucket> buckets = terms.getBuckets();
Run Code Online (Sandbox Code Playgroud)
聚合结果的默认返回大小为10个项目,这就是您只获得10个结果的原因.您需要size将AggregationBuilders对象设置为更大的值,以便返回存储桶中的更多或所有值.
SearchResponse response = client.prepareSearch("index")
.setTypes("type")
.setQuery(QueryBuilders.matchAllQuery())
.addAggregation(AggregationBuilders.terms("TermsAggr")
.field("aggField").size(100))
.execute().actionGet();
Run Code Online (Sandbox Code Playgroud)
如果您始终想要返回所有值,则可以进行设置size(0).但是,您需要升级到ES 1.1,因为最近通过问题4837将其添加到该版本.
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |