概述

权值聚合类型从需要聚合的文档中取一个值(value)来计算文档的相应权值(比如该值在这些文档中的max、sum等)。

用于计算的值(value)可以是文档的字段(field),也可以是脚本(script)生成的值。

数值权值聚合是特殊的权值聚合类型,因为它的输出权值也是数字。

数值权值聚合(注意分类只针对数值权值聚合,非数值的无此分类)输出单个权值的,叫做 single-value numeric metrics,其它生成多个权值(比如:stats)的被叫做 multi-value numeric metrics。

单值和多值数字权值聚合,在它们作为一些 Bucket 聚合的直接子聚合的时候会有明显区别。

Avg Aggregation(single-value numeric metrics)

均值聚合——基于文档的某个值,计算该值在聚合文档中的均值。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值
{
"aggs" : {
"avg_grade" : { "avg" : { "field" : "grade" } } //计算字段 grade 在文档中的平均值
}
}
//输出
{
... "aggregations": {
"avg_grade": {
"value":
}
}
}

Cardinality Aggregation(single-value)

基数聚合——基于文档的某个值,计算文档非重复的个数(去重计数)。

用于计算的值可以是特定的字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • precision_threshold:
  • missing:文档缺省字段时的默认值
{
"aggs" : {
"author_count" : {
"cardinality" : {
"field" : "author" //count the unique authors that match a query
}
}
}
}

stats aggregation(multi-value)

统计聚合——基于文档的某个值,计算出一些统计信息(min、max、sum、count、avg)。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值
{
"aggs" : {
"grades_stats" : { "stats" : { "field" : "grade" } }
}
}
//输出
{
...
"aggregations": {
"grades_stats": {
"count": ,
"min": ,
"max": ,
"avg": 78.5,
"sum":
}
}
}

Extended Stats Aggregation(multi-value)

扩展统计聚合——基于文档的某个值,计算出一些统计信息(比普通的stats聚合多了sum_of_squares、variance、std_deviationstd_deviation_bounds)。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值
  • sigma:标准差界限
{
... "aggregations": {
"grade_stats": {
"count": ,
"min": ,
"max": ,
"avg": ,
"sum": ,
//输出比 stats 聚合多了一些值
"sum_of_squares": ,
"variance": 51.55555555555556,
"std_deviation": 7.180219742846005,
"std_deviation_bounds": {
"upper": 100.36043948569201,
"lower": 71.63956051430799
}
}
}
}

Geo Bounds Aggregation

地理边界聚合——基于文档的某个字段(geo-point类型字段),计算出该字段所有地理坐标点的边界(左上角/右下角坐标点)。

配置参数

  • field:用于计算的字段
  • wrap_longitude:是否允许地理边界与国际日界线存在重叠
{
"query" : {
"match" : { "business_type" : "shop" }
},
"aggs" : {
"viewport" : {
"geo_bounds" : {
"field" : "location",
"wrap_longitude" : true
}
}
}
}
//输出
{
...
"aggregations": {
"viewport": {
"bounds": {
"top_left": { //左上角经纬度
"lat": 80.45,
"lon": -160.22
},
"bottom_right": { //右下角经纬度
"lat": 40.65,
"lon": 42.57
}
}
}
}
}

Geo Centroid Aggregation

地理重心聚合——基于文档的某个字段(geo-point类型字段),计算所有坐标的加权重心。

配置参数

  • field:用于计算的字段(geo-point类型)
{
"query" : {
"match" : { "crime" : "burglary" }
},
"aggs" : {
"centroid" : {
"geo_centroid" : {
"field" : "location"
}
}
}
}
//输出
{
...
"aggregations": {
"centroid": {
"location": { //重心经纬度
"lat": 80.45,
"lon": -160.22
}
}
}
}

Max Aggregation(single)

最大值聚合——基于文档的某个值,求该值在聚合文档中的最大值。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值

Min Aggregation(single)

最小值聚合——基于文档的某个值,求该值在聚合文档中的最小值。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值

Sum Aggregation(single-value)

求和聚合——基于文档的某个值,求该值在聚合文档中的统计和。

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值
//最大值,field
{
"aggs" : {
"max_price" : { "max" : { "field" : "price" } } // field
}
}
//最小值,script
{
"aggs" : {
"min_price" : {
"min" : {
"script" : { //script 计算 value
"file": "my_script",
"params": {
"field": "price"
}
}
}
}
}
}
//总和,value script
{
"aggs" : {
...
"aggs" : {
"daytime_return" : {
"sum" : {
"field" : "change", // field
"script" : "_value * _value" // 基于 field 用 script 计算 value
}
}
}
}
}

Percentiles Aggregation(multi-value)

百分百聚合——基于聚合文档中某个数值类型的值,求这些值中

用于计算的值可以是特定的数值型字段,也可以通过脚本计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
  • missing:文档缺省字段时的默认值

Script Metric Aggregation

基于脚本的权值聚合——用脚本来计算出一个权值

配置参数

  • init_script:用于计算的字段
  • map_script:由脚本生成用来计算的 value
  • combine_script:文档缺省字段时的默认值
  • reduce_script:
{
"query" : {
"match_all" : {}
},
"aggs": {
"profit": {
"scripted_metric": {
"init_script" : "_agg['transactions'] = []",
"map_script" : "if (doc['type'].value == \"sale\") { _agg.transactions.add(doc['amount'].value) } else { _agg.transactions.add(-1 * doc['amount'].value) }",
"combine_script" : "profit = 0; for (t in _agg.transactions) { profit += t }; return profit",
"reduce_script" : "profit = 0; for (a in _aggs) { profit += a }; return profit"
}
}
}
}

Top hits Aggregation

最高匹配权值聚合——跟踪聚合中相关性最高的文档。

该聚合一般用做 sub-aggregation,以此来聚合每个桶中的最高匹配的文档。

配置参数

  • from:最匹配的结果中的文档个数偏移
  • size:top matching hits 返回的最大文档个数(default 3)
  • sort:最匹配的文档的排序方式
{
"aggs": {
"top-tags": {
"terms": {
"field": "tags",
"size":
},
"aggs": {
"top_tag_hits": {
"top_hits": { //用 tags 字段分组,每个 tag(即一个分组)只显示最后一个问题,并且只在 _source 中保留 title 字段
"sort": [
{
"last_activity_date": {
"order": "desc"
}
}
],
"_source": {
"include": [
"title"
]
},
"size" :
}
}
}
}
}
}
//输出
"top_tags_hits": {
"hits": {
"total": ,
"max_score": ,
"hits": [
{
"_index": "stack",
"_type": "question",
"_id": "",
"_score": ,
"_source": {
"title": "Windows port opening"
},
"sort": [ ]
}
]
}
}

Value Count Aggregation(single-value)

值计数聚合——计算聚合文档中某个值的个数。

用于计数的值可以是特定的数值型字段,也可以通过脚本计算而来。

该聚合一般域其它 single-value 聚合联合使用,比如在计算一个字段的平均值的时候,可能还会关注这个平均值是由多少个值计算而来。

配置参数

  • field:用于计算的字段
  • script:由脚本生成用来计算的 value
{
"aggs" : {
"grades_count" : { "value_count" : { "field" : "grade" } } //计算 grade 字段共有多少个值,和 cardinality 聚合不同的
}
}

最新文章

  1. linux shell输出带颜色文本
  2. <<< 入侵网站类提权注入教程
  3. jsp中两种include的区别【转】
  4. C#中有哪些类型的数组
  5. 伪装MAC地址
  6. [原创]Android应用 - YE启动器APP(YeLauncherApp)
  7. 1837. Isenbaev's Number(floyd)
  8. 【JMeter】JMeter完成一个MySql压力测试
  9. Spark源码的编译过程详细解读(各版本)
  10. idea 配置node Run
  11. 阻止IOS自动识别页面上的电话号码、email地址
  12. java中Array/List/Map/Object与Json互相转换详解(转载)
  13. Hadoop日志文件
  14. 利用AnyProxy代理监控APP流量
  15. 微信小程序登录授权并获取手机号
  16. Emacs 不将M-Del删除的单词加入粘贴板
  17. pycharm的安装和使用小技巧
  18. SWUST OJ(953)
  19. POJ 3349&&3274&&2151&&1840&&2002&&2503
  20. static 成员函数

热门文章

  1. selenium IDE & Remote Control & Webdriver
  2. <转>堆和栈的区别
  3. python def说明
  4. 进程隐藏与进程保护(SSDT Hook 实现)(一)
  5. 命令cd
  6. Visual Studio 2015 编译错误【错误 C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. 】的解决方案
  7. HW6.11
  8. 让浏览器进行跨域访问, 开发阶段需要跨域访问的测试方案 chrome的快捷方式里面 加 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --args --disable-web-security
  9. Windows性能监视器之CPU、硬盘、IO等监控方法详解-摘自网络
  10. A Tour of Go Range continued