1. 程式人生 > >es java聚合方法——多欄位分組並求和

es java聚合方法——多欄位分組並求和

 /**
     * 多欄位分組並求和;實現sql:select field1, field2, sum(field3) from table_name group by field1, field2;
     */
    @Test
    public void sumAfterTwiceAgg() {
        SearchResponse response = client.prepareSearch("twitter").setTypes("tweet")
                .addAggregation(AggregationBuilders.terms("userAgg"
).field("user.keyword") .subAggregation(AggregationBuilders.terms("sexAgg").field("sex.keyword") .subAggregation(AggregationBuilders.sum("sumAgg").field("age")))) //求和要放到最內層的分組語句裡面 .get(); Terms userAgg = response.getAggregations
().get("userAgg"); for (Terms.Bucket entry : userAgg.getBuckets()) { Terms sexAgg = entry.getAggregations().get("sexAgg"); for (Terms.Bucket entry2 : sexAgg.getBuckets()) { Sum sum = entry2.getAggregations().get("sumAgg"); System.out.println
("user:" + entry.getKey()+"-------sex:"+entry2.getKey() + "----------sum:" + sum.getValue()); } } }