java elasticSearch group by sum 一些常用操作

  • Post author:
  • Post category:java


一、只分组查询 groupBy

根据 id group by

SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("index").setTypes("type");
    
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("group_id").field("id");

searchRequestBuilder.addAggregation(termsAggregationBuilder);

SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();

Terms terms = searchResponse.getAggregations().get("group_id");

for (Terms.Bucket bucket : terms.getBuckets()) {
	bucket.getKey();
	bucket.getDocCount();
}

二、只 sum

SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("index").setTypes("type");
    
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.sum("sum_price").field("price");

searchRequestBuilder.addAggregation(termsAggregationBuilder);

SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();

Sum sum = searchResponse.getAggregations().get("sum_price");

sum.getName();

sum.getValue();

三、groupBy 后 sum

SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("index").setTypes("type");
 
//group   
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("group_id").field("id");

//sum
termsAggregationBuilder.subAggregation(AggregationBuilders.sum("sum_price").field("price"));

searchRequestBuilder.addAggregation(termsAggregationBuilder);

SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();

Terms terms = searchResponse.getAggregations().get("group_id");

for (Terms.Bucket bucket : terms.getBuckets()) {
	 Sum sum = bucket.getAggregations().get("sum_price");
	 
	 String name = sum.getName();
	 
	 double value = sum.getValue();
}

四、max

    MaxAggregationBuilder maxAggregationBuilder = AggregationBuilders.max(maxFieldName).field(maxFieldName);

    searchRequestBuilder.addAggregation(maxAggregationBuilder);

    SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();

    Max max = searchResponse.getAggregations().get(maxFieldName);
    
    max.getValue()

五、save all

 	BulkRequestBuilder bulkRequestBuilder = transportClient.prepareBulk();
        for (T t : list) {
            String jsonStr = JSON.toJSONString(t);
            IndexRequestBuilder indexRequestBuilder = transportClient.prepareIndex(index, type).setSource(jsonStr);
            bulkRequestBuilder.add(indexRequestBuilder);
        }
     BulkResponse bulkItemResponses = bulkRequestBuilder.get();



版权声明:本文为weixin_40467684原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。