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), ...
随机推荐
- ipv6被拒的解决方法
A,检测服务器是否支持ipv6连接 用mac 搭建IPv6环境测试,只能测试客户端到mac这段网络正常,但是mac到服务器还是IPv4的,所以没有办法测试服务器的IPv6是否正常.可以用手机打开2)步 ...
- Python 中的条件运算符
一.概述 在 C.Java 等语言中,有一种常见的条件运算符,又叫"三目运算符". 详情参见 [条件运算符-wikipedia][https://zh.wikipedia.org/ ...
- iOS导入高德地图出现缺失armv7--"Undefined symbols for architecture armv7"
在已有项目中使用pod导入高德地图,报了以下错误: ld: warning: directory not found for option '-L/Users/paul/iOS/yun-hui-yi/ ...
- [原创] 毕设---在myeclipes中安装Hadoop开发插件
1.安装Hadoop开发插件 hadoop安装包contrib/目录下有个插件hadoop-0.20.2-eclipse-plugin.jar,拷贝到myeclipse根目录下/dropins目录下. ...
- Android bluetooth介绍
Android bluetooth介绍(一):基本概念及硬件接口Android bluetooth介绍(二): android 蓝牙代码架构及其uart 到rfcomm流程Android blueto ...
- 【c++习题】【17/4/13】stack
1.stack 模板.动态内存分配.析构 #include "stack2.cpp" #include <iostream> using namespace std; ...
- 【Java】流与文件(端口 & 文件读写对象)
概述: 1.input和output是相对于内存而言的.输入(input)就是写入到内存里,输出(output)就是把内存里的东西写到外面. 2.操作内存里的东西非常便利,要么声明变量,要么new对象 ...
- EasyUI:datagrid控件简介
EasyUI:datagrid控件简介 1,水平滚动条属性: //显示滚动条 fitColumns:false //不显示滚动条 fitColumns:true
- 较常用的Math方法及ES6中的扩展
记录下与Math有关的常用方法,如:求最大值.最小值等,或者是保留几位数啥的 1.数据 let floatA = 2.325232; let floatB = 2.3456; let temporar ...
- 深入理解JVM4——线程安全
浅谈java内存模型 不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的.其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序 ...