JavaのElasticsearchネストされたサブ重合

 

集計サブクエリ:

。。TermsAggregationBuilderアグリゲーション= AggregationBuilders.terms( "DT_ID")フィールド( "dt_ids")サイズ(30000 )。
        文字列agg_area_field = "CITY_CODE" 
        TermsAggregationBuilder area_field_builder = AggregationBuilders.terms( "area_field")フィールド(agg_area_field).size(30000 )。
        area_field_builder.subAggregation(集合)
        SearchResponse応答 = client.prepareSearch(INDEX_NAME).setTypes( "lw_devices" 
                .setQuery(boolQuery)
                .addAggregation(area_field_builder)
                .execute()
                .actionGet();

 

実質的デモ、重合を重合CITY_CODE重合の最初のフィールド、及び重合結果とその後のネストされたフィールドdt_ids重合(重合促進剤)によって2つのSQL基の当量が、他にネスト上記手段内、あなたはsubAggregationメソッドに関連付けることができます。

 

重合は、トラバーサルの結果です:

 

        利用規約の条項の=のresponse.getAggregations()を取得( "area_field"。); 
        一覧 <Terms.Bucket>バケツ= terms.getBuckets(); (Terms.Bucketバケット:バケット){
             // 地区 
            文字コード= (文字列)bucket.getKey(); 
            System.out.println(コード)。
            集計集計 = bucket.getAggregations()。
            利用規約DT_ID = aggregations.get( "DT_ID" ); 
            一覧 <Terms.Bucket> buckets1 = dt_id.getBuckets();
            以下のため {(buckets1 Terms.Bucket用のbucket1)
                のSystem.out.println(bucket1.getKey() + ":" + bucket1.getDocCount())。
            } 
        }

 

アイデアは、最初の識別子に基づいて、凝集による応答を取得した後、重合対応するタイプの、得られたコレクションバケットを取得することです。その後、凝集によりバケットを取得し、このサイクルダウン集計の結果。

おすすめ

転載: www.cnblogs.com/chenmz1995/p/11583915.html