免费海报制作网站,免费咨询产科医生,怎么做网站企业文化栏目,太原市网站制作Elasticsearch指标聚合#xff0c;就是类似SQL的统计函数#xff0c;指标聚合可以单独使用#xff0c;也可以跟桶聚合一起使用#xff0c;下面介绍Java Elasticsearch指标聚合的写法。 实例#xff1a;
// 首先创建RestClient#xff0c;后续章节通过RestClient对象进行…Elasticsearch指标聚合就是类似SQL的统计函数指标聚合可以单独使用也可以跟桶聚合一起使用下面介绍Java Elasticsearch指标聚合的写法。 实例
// 首先创建RestClient后续章节通过RestClient对象进行参数配置。
RestClientBuilder restClientBuilder RestClient.builder(new HttpHost(localhost, 9200, http), // 设置ES服务地址支持多个new HttpHost(localhost, 9201, http));// 创建RestHighLevelClient请求都是通过RestHighLevelClient实例发出去的。RestHighLevelClient client new RestHighLevelClient(restClientBuilder);// 创建SearchRequest对象, 索引名order
SearchRequest searchRequest new SearchRequest(order);
// 通过SearchSourceBuilder构建搜索参数
SearchSourceBuilder builder new SearchSourceBuilder();
// 通过QueryBuilders构建ES查询条件这里查询所有文档复杂的查询语句设置请参考前面的章节。
builder.query(QueryBuilders.matchAllQuery());// 创建Value Count指标聚合
// 聚合统计命名为orders 统计order_id字段值的数量
ValueCountAggregationBuilder valueCountAggregationBuilder AggregationBuilders.count(orders).field(order_id);// 创建Sum指标聚合
// 聚合统计命名为total_sale 统计price字段值的总和
SumAggregationBuilder sumAggregationBuilder AggregationBuilders.sum(total_sale).field(price);// 设置聚合查询,可以设置多个聚合查询条件只要聚合查询命名不同就行
builder.aggregation(valueCountAggregationBuilder);
builder.aggregation(sumAggregationBuilder);// 设置搜索条件
searchRequest.source(builder);// 执行ES请求
SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);// 处理聚合查询结果
Aggregations aggregations searchResponse.getAggregations();
// 根据orders命名查询ValueCount统计结果
ValueCount valueCount aggregations.get(orders);
System.out.println(valueCount.getValue());// 根据total_sale命名查询Sum统计结果
Sum sum aggregations.get(total_sale);
System.out.println(sum.getValue());其他指标聚合的用法类似后面分别介绍常用指标聚合。
常用指标聚合
1. Value Count
值聚合主要用于统计文档总数类似SQL的count函数。 创建聚合条件
// 创建Value Count指标聚合
// 聚合统计命名为orders 统计order_id字段值的数量
ValueCountAggregationBuilder valueCountAggregationBuilder AggregationBuilders.count(orders).field(order_id);处理聚合结果
Aggregations aggregations searchResponse.getAggregations();
// 根据orders命名查询ValueCount统计结果
ValueCount valueCount aggregations.get(orders);
// 打印结果
System.out.println(valueCount.getValue());********************************************** 未完待续 *******************************************************