Elasticsearch 聚合桶总是只显示 10 个结果
Elasticsearch aggregation buckets always showing only 10 results
我正在使用 Elasticsearch 聚合加载数据,当传递偏移量计数时,响应结果显示正确,但术语聚合 results/buckets 始终只显示 10 个结果。
Map<String, BucketStats> hourAggregations = new HashMap<>();
SearchResponse getResponse = client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TABLE)
.addAggregation( AggregationBuilders.terms( "name")
.field( "empId" )
.subAggregation( AggregationBuilders.stats( "stats" )
.setQuery( query )
.setFrom( 0 )
.setSize( ( offset + 1 ) * 10 )
.execute().actionGet();
Terms terms = getResponse.getAggregations().get("name");
for ( Terms.Bucket bucket : terms.getBuckets() )
{
//buckets showing only 10 results
}
您需要为 terms
聚合指定大小:
Map<String, BucketStats> hourAggregations = new HashMap<>();
SearchResponse getResponse = client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TABLE)
.addAggregation( AggregationBuilders.terms( "name")
.field( "empId" )
--> .size(100)
.subAggregation( AggregationBuilders.stats( "stats" )
.setQuery( query )
.setFrom( 0 )
.setSize( ( offset + 1 ) * 10 )
.execute().actionGet();
setSize()
调用仅影响 hits
部分,即结果中的文档集,而不是聚合。在我看来,您应该调用 setSize(0)
,因为您只需要聚合值而不是文档。
我正在使用 Elasticsearch 聚合加载数据,当传递偏移量计数时,响应结果显示正确,但术语聚合 results/buckets 始终只显示 10 个结果。
Map<String, BucketStats> hourAggregations = new HashMap<>();
SearchResponse getResponse = client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TABLE)
.addAggregation( AggregationBuilders.terms( "name")
.field( "empId" )
.subAggregation( AggregationBuilders.stats( "stats" )
.setQuery( query )
.setFrom( 0 )
.setSize( ( offset + 1 ) * 10 )
.execute().actionGet();
Terms terms = getResponse.getAggregations().get("name");
for ( Terms.Bucket bucket : terms.getBuckets() )
{
//buckets showing only 10 results
}
您需要为 terms
聚合指定大小:
Map<String, BucketStats> hourAggregations = new HashMap<>();
SearchResponse getResponse = client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TABLE)
.addAggregation( AggregationBuilders.terms( "name")
.field( "empId" )
--> .size(100)
.subAggregation( AggregationBuilders.stats( "stats" )
.setQuery( query )
.setFrom( 0 )
.setSize( ( offset + 1 ) * 10 )
.execute().actionGet();
setSize()
调用仅影响 hits
部分,即结果中的文档集,而不是聚合。在我看来,您应该调用 setSize(0)
,因为您只需要聚合值而不是文档。