elasticsearch 度量(Metrics)聚合

1、聚合特殊处理

用途语法
缺失值处理“missing”: 10
最小聚合doc_count过滤“min_doc_count”: 10
指定百分比聚合统计区间范围“percents”: [95, 99, 99.9]
百分比聚合数组方式返回“keyed”: false
按照doc_count排序“order” : { “_count” : “asc” }
按分组字段值排序“order” : { “_key” : “asc” }
按照字典方式排序“order” : { “_term” : “asc” }
include可以匹配出包含该值的文档“include” : “.sport.
exclude则排除包含该值的文档“exclude” : “water_.*”

2、avg求平均值
求tradeDate在20201211到20201216期间,个股现价(priceNow)平均值。

逻辑先按tradeDate进行数据查询(query),再按个股(securityId)进行分组聚合,再对每只个股聚合计算现价(priceNow)平均值。

{
  "size":0,
  "query":{
    "bool":{
      "must":[
        {
          "range":{
            "tradeDate":{
               "from":20201211,
               "to":20201216,
               "include_lower":true,
               "include_upper":true
            }
          }
        }
      ]
    }
  },
     "aggs": {
      "colors": {
         "terms": {
            "field": "securityId",
            "order" : { "_count" : "asc" }
         },
         "aggs": {
            "avg_price": { 
               "avg": {
                  "field": "priceNow" 
               }
            }
         }
      }
   }
}

3.另一种求平均值的方法

逻辑求某交易日,大市值股票的平均价格。

{
  "size":0,
  "query":{
    "bool":{
      "must":[
        {
          "range":{
            "tradeDate":{
               "from":20201216,
               "to":20201216,
               "include_lower":true,
               "include_upper":true
            }
          }
        },
        {
          "range":{
            "marketVal":{
               "from":67868598798,
               "to":null,
               "include_lower":true,
               "include_upper":true
            }
          }
        }
      ]
    }
  },
   "aggs": {
    "avg_balance": {
      "avg": {
        "script": {
          "source": "doc.priceNow.value"
        }
        }
      }
  }
}

4、最大值、最小值聚合
max

{
  "aggs": {
    "max_priceNow": {"max": {"field": "priceNow"}}
  }
}

min

{
  "aggs": {
    "min_priceNow": {"min": {"field": "priceNow"}}
  }
}

5、百分比聚合
求数值分布百分比
默认百分比范围:[1, 5, 25, 50, 75, 95, 99]。
可指定百分比范围

 "percents": [95, 99, 99.9]
{
  "size":0,
  "aggs": {
    "age_outlier": {
      "percentiles": {
        "field": "priceNow",
        "percents": [95, 99, 99.9]
      }
    }
  }
}

6、stats 数值概况统计

返回最大、最小、平均值、总和的统计情况

{
  "aggs": {
    "stats_priceNow": {"stats": {"field": "priceNow"}}
  }
}

7、其他度量聚合

  • a、sum,求和
  • b、value_count,求值数量
  • c、extended_stats 高级统计,比stats多4个统计结果: 平方和、方差、标准差、平均值加/减两个标准差的区间。
  • d、percentile_ranks 统计 值小于等于指定值的文档占比
  • e、cardinality 基数聚合 , 计算的是count(distinct) , 通常会有5%的错误率。
    按度量结果排序:
{
    "aggs" : {
        "genders" : {
            "terms" : {
                "field" : "securityId",
                "order" : { "avg_balance" : "desc" }
            },
            "aggs" : {
                "avg_balance" : { "avg" : { "field" : "priceNow" } }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值