ElasticSearch 聚合函数「建议收藏」

ElasticSearch 聚合函数

大家好,又见面了,我是全栈君。

一、简单聚合

 :简单来说就是满足特定条件的文档的集合。

指标:大多数 指标 是简单的数学运算(例如最小值、平均值、最大值,还有汇总),这些是通过文档的值来计算。

         桶能让我们划分文档到有意义的集合, 但是最终我们需要的是对这些桶内的文档进行一些指标的计算。分桶是一种达到目的的手段:它提供了一种给文档分组的方法来让我们可以计算感兴趣的指标。在实践中,指标能让你计算像平均薪资、最高出售价格、95%的查询延迟这样的数据。

例如,桶和指标可以类似映射成SQL查询语句

SELECT COUNT(color)  //相当于桶 FROM table GROUP BY color  //相当于指标

桶在概念上类似于 SQL 的分组(GROUP BY),而指标则类似于 COUNT() 、 SUM() 、 MAX() 等统计方法。

 

 1 curl -XGET 'http://192.9.8.222:9200/wymlib/ym_literature/_search?pretty=true' -d '
 2 {
 3   "size": 0,
 4   "aggregations": {
 5     "popular_author": {
 6       "terms": {
 7         "field": "author"
 8       }
 9     }
10   }
11 }'

结果显示: 
1
{ 2 "took" : 2803, 3 "timed_out" : false, 4 "_shards" : { 5 "total" : 5, 6 "successful" : 5, 7 "failed" : 0 8 }, 9 "hits" : { 10 "total" : 25, 11 "max_score" : 0.0, 12 "hits" : [ ] 13 }, 14 "aggregations" : { //1 15 "popular_author" : { //2 16 "doc_count_error_upper_bound" : 0, 17 "sum_other_doc_count" : 0, 18 "buckets" : [ { //3 19 "key" : "王阳明", 20 "doc_count" : 4 21 }, { 22 "key" : "阳明", 23 "doc_count" : 4 24 }, { 25 "key" : "胡", 26 "doc_count" : 2 27 }, { 28 "key" : "大大", 29 "doc_count" : 1 30 }, { 31 "key" : "建", 32 "doc_count" : 1 33 }, { 34 "key" : "徐", 35 "doc_count" : 1 36 }, { 37 "key" : "杰", 38 "doc_count" : 1 39 }, { 40 "key" : "闯", 41 "doc_count" : 1 42 } ] 43 } 44 } 45 }

//1  聚合操作被置于顶层参数 aggs 之下(如果你愿意,完整形式 aggregations 同样有效)。

//2  然后,可以为聚合指定一个我们想要名称,本例中是: popular_colors 。

//3  最后,定义单个桶的类型 terms(这里出现的是buckets) 。

 

注意:可能会注意到我们将 size 设置成 0 。我们并不关心搜索结果的具体内容,所以将返回记录数设置为 0 来提高查询速度。 设置 size: 0 与 Elasticsearch 1.x 中使用 count 搜索类型等价。

 

二、基于metric的聚合

因为不是特别了解,我暂且将它理解为基于指标的聚合,后面如果发现不对,再来改正。

 1 curl -XGET 'http://192.9.8.222:9200/test_es_order_index/test_es_order_type/_search?pretty=true' -d '
 2 {
 3   "aggregations": {
 4     "sum_age": {
 5       "sum": {
 6         "field": "age"
 7       }
 8     }
 9   }
10 }'

结果:(age 一个是29 一个是21求和后是50)

1 "aggregations" : {
2     "sum_age" : {
3       "value" : 50.0
4     }
5   }

 

stats统计:

 1 curl -XGET 'http://192.9.8.222:9200/test_es_order_index/test_es_order_type/_search?pretty=true' -d '
 2 {
 3   "size":0,
 4   "aggregations": {
 5     "stats_age": {
 6       "stats": {
 7         "field": "age"
 8       }
 9     }
10   }
11 }'

结果(请求后会直接显示多种聚合结果):

 1 {
 2   "took" : 2,
 3   "timed_out" : false,
 4   "_shards" : {
 5     "total" : 5,
 6     "successful" : 5,
 7     "failed" : 0
 8   },
 9   "hits" : {
10     "total" : 7,
11     "max_score" : 0.0,
12     "hits" : [ ]
13   },
14   "aggregations" : {
15     "stats_age" : {
16       "count" : 2,
17       "min" : 21.0,
18       "max" : 29.0,
19       "avg" : 25.0,
20       "sum" : 50.0
21     }
22   }
23 }

 

 

【Reference】

【1】 http://www.cnblogs.com/xing901022/p/4947436.html

【2】 https://www.elastic.co/guide/cn/elasticsearch/guide/current/_aggregation_test_drive.html

【3】 http://www.cnblogs.com/xing901022/p/4944043.html

 

转载于:https://www.cnblogs.com/hoojjack/p/7709951.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108091.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 中国电信修改光猫路由模式为桥接模式怎么改_打10000改电信光猫桥接模式

    中国电信修改光猫路由模式为桥接模式怎么改_打10000改电信光猫桥接模式首先,需要搞到超级管理员的账号和密码,可以上网根据光猫型号查找,也可以直接跟安宽带的工作人员要.第一步:准备超级管理员账号和密码.可以自行根据光猫型号搜索,也可以直接跟安宽带的工作人员要.第二步:使用超级管理员账密登录网关管理页面(光猫)一般为192.168.1.1(前提你的路由模式为路由模式,而不是桥接模式)第三步:修改光猫参数1:连接名称修改改为3_INTERNET_R_VID_412:连接模式修改为桥接3:保存第四步:使用路由器拨号宽带账号和密码一般都会贴在光猫上,如果丢失了

  • php中fread用法,php fread函数与fread函数用法_PHP教程

    php中fread用法,php fread函数与fread函数用法_PHP教程phpfread函数与fread函数用法php教程fread函数与fread函数用法/*fread语法:stringfread(resource$handle,int$length)fread()读取到的字节长度由处理引用的文件指针。读尽快停止对符合下列条件之一:已经读取的字节长度!eof(文件结束)达到一包可用网络(流)已阅读8192字节(打开后用户空间流)*///fread…

  • 自适应音频功率放大器「建议收藏」

    自适应音频功率放大器「建议收藏」自适应音频功率放大器一、题目描述基本指标:输入信号范围10-100mV有效值,负载电阻8Ω,输出功率恒定2W其他要求:测取功放指标,测取输入、输出电阻,测取通频带曲线,验证带宽。二、设计思路拟采用自动增益控制(AGC)电路+功率放大电路实现该课题要求。2.1AGC电路设计思路采用结形场效应管(JFET)或程控放大芯片设计。①利用JFET2N3821工作在可变电阻区,通过改变场效应管源漏极间的电阻来控制运算放大器的放大倍数。②采用AD603程控增益可调集成运放作为可变增益放大器结合简单

  • matlab 循环矩阵_matlab循环输出数组

    matlab 循环矩阵_matlab循环输出数组MATLAB的矩阵求值的循环语句?clc;clearall;closeall;t0=[11];a=[12;34]t=t0;t(1,:)=t0’\an=10;fori=2:nt(i,:)=t(i-1,:)’\a;endtmatlab中的核矩阵for循环问题A(i,:)-A(j,:)表示A矩阵的第i行减去第j行,得到的是一个行向量;norm函数是取2范数,也就是向量的各项平方求和再开方.(因此我觉…

  • 深入理解JVM的垃圾回收机制

    深入理解JVM的垃圾回收机制上一篇博客介绍了Java运行时内存的各个区域。对于程序计数器、虚拟机栈、本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回收了。因此本篇文章所讲的有关内存分配和回收关注的是Java堆与方法区这两个区域。1、如何判断对象已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器…

  • java查找字符的方法_Java字符串查找(3种方法)

    java查找字符的方法_Java字符串查找(3种方法)在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。根据字符查找String类的indexOf()方法和lastlndexOf()方法用于在字符串中获取匹配字符(串)的索引值。1.indexOf()方法indexOf()方法用于返回字符(串)在指定字符串中首次出现的索引位置,…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号