Aggregations|学习笔记

简介: 快速学习 Aggregations。

开发者学堂课程【ElasticSearch 最新快速入门教程Aggregations】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/642/detail/10662


Aggregations

 

主要内容

一、聚合操作 ES JavaAPI_aggregation

二、聚合操作演示

 

一、聚合操作 ES JavaAPI_aggregation

1、aggregation 指的是一些聚合操作,聚合操作就是根据字段进行分组统计;根据字段分组,统计其他字段的值;size 设置为0,会获取所有数据,否则,只会返回10条

//需求:查询 bank 索引库中,所有女性员工数,最年轻的员工的年龄,最低薪水(银行存款余额),以及平均薪水

//步骤:

//1)检索

SearchResponse response = client.preparesearch(indices)

.setTypes("account")

//设置检索的条件

.setQuery(QueryBuilders.termouery("gender.keyword", "F"))

//设置聚合操作

//1员工数

.addAggregation(new ValuecountAggregationBuilder("cntEmp”,

ValueType.LONG).field("account_number"))

讲解:cntEmp 是别名,account_number 是账户号

//2最年轻的(女性)员工的年龄

.addAggregation(new MinAggregationBuilder("minAge").field("age"))

//3(女性员工)最少银行存款余额

.addAggregation(new MinAggregationBuilder("minBalance").field("balance"))

//4 (女性员工)平均银行存款余额

.addAggregation(new AvgAggregationBuilder("avgBalance").field("balance"))

//触发检索

.get();

//2)分析检索后的结果

Aggregations aggregations = response.getAggregations();

Valuecount cntEmp = aggregations.get("cntEmp");

Min minAge - aggregations.get("minAge");

Min minBalance = aggregations.get("minBalance");

Avg avgBalance = aggregations.get("avgBalance");

//3)显示结果

//%d,占位符,同时也是格式符,用来格式化整数的;%f:格式化小数;%s:格式化字符串;%n:用来换行System.out.printf("bank素引库中,所有女性员工数是:%d,最年轻的员工的年龄:%.0f,最低银行存款余额:%.2f,以及平均银行存款余额:%.2f", I

cntEmp.getvalue(), minage.getvalue(), minBalance.getvalue(),

avgBalance.getValue());

 

二、聚合操作演示

1、查询索引库 bank 中的 type 之 account,查询出所有的女性的账户总数,最少银行存款余额,最多银行存款余额,以及平均银行存款余额。

@Test

public vold testAggregation() throws IOException {

//步骤:

//1查询

SearchResponse response= client.prepareSearch

( …indices :“bank”)

.setTypes("account”)

//所有的女性的账户总数

.addAggregation(new ValueCountAggregationBuilder( name :"cnt”, ValueType.LONG.fleld(“account_ number)

注意:

field 里一般用组建,组建的是账户号 accout_number

//最少银行存款余额

.addAggregation(new MinAggregationBuilder( name :"minBalance”).field(“balance”))

//最多银行存款余额

.addAggregation(new MaxAggregationBuilder( name:"maxBalance").fleld("balance”)

//平均银行存款余额

.addAggregation(new AvgAggregationBullder(name:"avgBalance”).field(“balance”)).

.get();

//2分析结果

Aggregations aggregations = response.getAggregations();

ValueCount vc = aggregations.get("cnt”);

Min minBalance = aggregations.get("minBalance"); Max maxBalance = aggregations.get("maxBalance"); Avg avgBalance = aggregations.get("avgBalance”)

}

System.out.println( “所有的女性的账户总数是:%d%n最少银行存款余额是:%f%n,最多银行存款余额是:%f%n,以及平均银行存款余额是:%f%n”

vc.get value,minBalance.getValue,maxBalance.getvalue,avgBalance.getvalue())  

2、执行看一下结果

image.png

这个结果既包括男性也包括女性。

3、加一个条件,结果就只包括女性

 //1查询

SearchResponse response= client.prepareSearch

( …indices :“bank”)

.setTypes("account”)

//所有的女性的账户总数

.setQuery(QueryBuilders.termQuery(name:”gender.keyword,”value:”F”)

再来执行一下

image.png

相关文章
|
Linux Shell 数据安全/隐私保护
Linux配置代理请求
Linux配置代理请求
323 0
|
SQL Java 数据库连接
Mybatis-Plus常用的查询方法--看这一篇就够了!!!
前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的入门搭建与配置测试 这样就可以跟小编站在同一起跑线了,咱们直接开始介绍方法的使用哦!!
1692 2
|
Java 数据安全/隐私保护
|
6月前
|
缓存 IDE 开发工具
Flutter Demo 的快速编译与运行
Flutter Demo 的快速编译与运行
189 15
|
NoSQL 搜索推荐 关系型数据库
MongoDB的就业前景非常广阔
MongoDB的就业前景非常广阔
296 2
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
237 2
|
XML JSON Java
@PostMapping 必须加上@RequestBody吗
@PostMapping 必须加上@RequestBody吗
478 2
|
前端开发 数据库
【Stream流】Sort排序详解
【Stream流】Sort排序详解
292 0
|
存储 缓存 自然语言处理
elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结
elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结
ASCII编码字符分布
ASCII编码字符分布
836 2