社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

ElasticSearch聚合存储桶始终只显示10个结果

Wijayanga Wijekoon • 7 年前 • 3058 次点击  

我对负载数据使用了elasticsearch聚合,当传递offset count时,响应结果显示正确,但是术语聚合结果/bucket始终只显示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
    }
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47258
文章 [ 1 ]  |  最新文章 7 年前
Val
Reply   •   1 楼
Val    7 年前

你需要给你的 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) ,因为您只需要聚合值而不需要文档。