elasticsearch聚合案例--分组、求最大值再求最大值的均值
一、需求
A、B、C代表3个用户,第二列代表各自的得分,求A、B、C的最好成绩以及A、B、C最好成绩的均值
A 10
A 11
A 13
B 11
B 11
B 12
C 10
C 10
C 11
C 15
二、思路
先terms分组,求最大值,最后加一个pipeline均值。一开始想用bucket_script解决,实验发现走不通,但是bucket_script在聚合结果之上操作很有用
三、测试数据
PUT sport
{
"mappings": {
"grade": {
"properties": {
"user": {
"type": "keyword"
},
"grade":{
"type": "integer"
}
}
}
}
}
PUT sport/grade/1
{
"user":"A",
"grade":10
}
PUT sport/grade/2
{
"user":"A",
"grade":11
}
PUT sport/grade/3
{
"user":"A",
"grade":13
}
PUT sport/grade/4
{
"user":"B",
"grade":11
}
PUT sport/grade/5
{
"user":"B",
"grade":11
}
PUT sport/grade/6
{
"user":"B",
"grade":12
}
PUT sport/grade/7
{
"user":"C",
"grade":10
}
PUT sport/grade/8
{
"user":"C",
"grade":10
}
PUT sport/grade/9
{
"user":"C",
"grade":11
}
PUT sport/grade/10
{
"user":"C",
"grade":15
}
四、聚合
GET sport/_search
{
"size": 0,
"aggs": {
"avg_score": {
"terms": {
"field": "user"
},
"aggs": {
"max_score": {
"max": {
"field": "grade"
}
}
}
},
"avg_max_score": {
"avg_bucket": {
"buckets_path": "avg_score>max_score"
}
}
}
}
结果:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 10,
"max_score": 0,
"hits": []
},
"aggregations": {
"avg_score": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "C",
"doc_count": 4,
"max_score": {
"value": 15
}
},
{
"key": "A",
"doc_count": 3,
"max_score": {
"value": 13
}
},
{
"key": "B",
"doc_count": 3,
"max_score": {
"value": 12
}
}
]
},
"avg_max_score": {
"value": 13.333333333333334
}
}
}
elasticsearch聚合案例--分组、求最大值再求最大值的均值的更多相关文章
- 058 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 05 案例:求数组元素的最大值
058 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 05 案例:求数组元素的最大值 本文知识点:求数组元素的最大值 案例:求数组元素的最大值 程序代码及其执行过程 ...
- 白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 二.福利:账号借用 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! ...
- 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...
- ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)
目录 1 普通聚合分析 1.1 直接聚合统计 1.2 先检索, 再聚合 1.3 扩展: fielddata和keyword的聚合比较 2 嵌套聚合 2.1 先分组, 再聚合统计 2.2 先分组, 再统 ...
- 在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max——猎八哥fly
在数组a中,a[i]+a[j]=a[k],求a[k]的最大值,a[k]max. 思路:将a中的数组两两相加,组成一个新的数组.并将新的数组和a数组进行sort排序.然后将a数组从大到小与新数组比较,如 ...
- 【C语言】不使用大小于号,求出两数最大值
//不使用大小于号,求出两数最大值 #include <stdio.h> #include <math.h> double Max(double a, double b) { ...
- python 可变数量参数 ( 多参数返回求 参数个数,最大值,最大值)
一. 自定义一串数字求 参数个数,最大值,最大值()---------方法一: def max(*a): m=a[0] p=a[0] n=0 for x in a: if x>m: m=x n+ ...
- POJ 1887:Testing the CATCHER 求递减序列的最大值
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16131 Accepted: 5 ...
- spark求相同key的最大值
需求: 求相同key的最大值 [("a", 3), ("a", 2), ("a", 5), ("b", 5), ...
随机推荐
- 推荐系统第2周--itemCF和userCF
推荐系统分类 基于应用领域分类:电子商务推荐,社交好友推荐,搜索引擎推荐,信息内容推荐基于设计思想:基于协同过滤的推荐,基于内容的推荐,基于知识的推荐,混合推荐基于使用何种数据:基于用户行为数据的推荐 ...
- 集成ssm+shiro出现的 问题
1.springmvc-servlet.xml .applicationContext.xml该如何配置include和exclude?,目前的做法是将.applicationContext.xml全 ...
- PAT 天梯赛 L1-001 【水】
L1-001. Hello World 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 这道超级简单的题目没有任何输入. 你只需要在一行中输 ...
- 基于jQuery和Bootstrap的手风琴垂直菜单
在线演示 本地下载
- jQuery垂直滑动切换焦点图
在线演示 本地下载
- MySQL数据库表分区功能详解
1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...
- iOS 那些年我们遇到的坑
1坑: UITableView的第一个Cell下移
- mfc报文相关算法
1.传入_T("AAAABBBBCC"),返回_T("AA AA BB BB CC") CString FormatPacket(CString packet_ ...
- python标准库学习-ftplib
源码: """An FTP client class and some helper functions. Based on RFC 959: File Transfer ...
- 使用Xcode IDE写node.js
最近在玩node.js 但是发现很多IDE就是用不顺手 后来发现Xcode可以剖析java script 于是试着使用Xcode来当做node.js的编辑器 首先,在Mac上必须先安装node.js的 ...