当前位置: 首页 > news >正文

java elasticsearch 桶聚合(bucket)

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());

********************************************** 未完待续 *******************************************************

http://www.lryc.cn/news/248541.html

相关文章:

  • 【人生苦短,我学 Python】(4)Python 常用内置数据类型 II —— 序列数据类型(str、tuple、list、bytes和bytearray)
  • Android 9.0 系统默认显示电量百分比
  • 原神:夏洛蒂是否值得培养?全队瞬抬治疗量不输五星,但缺点也很明显
  • Sublime text 添加到鼠标右键菜单,脚本实现
  • 【算法】离散化 与 哈希 之间的区别
  • Android : GPS定位 获取当前位置—简单应用
  • 目标检测——R-CNN算法解读
  • 基于傅里叶变换的运动模糊图像恢复算法matlab仿真
  • 使用mock.js模拟数据
  • Android Handler同步屏障:深入解析
  • HT for Web (Hightopo) 使用心得(5)- 动画的实现
  • Leetcode(面试题 08.01.)三步问题
  • AIGC: 关于ChatGPT中输出表格/表情/图片/图表这些非文本的方式
  • 聊聊logback的addtivity属性
  • 在网络安全护网中,溯源是什么?
  • 【刷题】动态规划
  • hadoop操作
  • 角色管理--高级产品经理岗
  • nginx: [alert] could not open error log file
  • MySQL数据库:外键、唯一键、唯一索引
  • CSS核心功能手册:从熟悉到精通
  • 编程的重要性及解决技术难题的方法
  • 如何成为一名高效的前端开发者(10X开发者)
  • Docker port 命令
  • PostgreSQL-SQL联表查询LEFT JOIN 数据去重复
  • Golang与MongoDB的完美组合
  • 初识Java 18-2 泛型
  • vue分环境打包及案例代码
  • 基于springboot+vue的在线考试系统(前后端分离)
  • 重装linux后需要做的配置