27.Elasticsearch索引聚合查询—Pipline聚合

27.1 ElasticSearch设计管道机制

  • 让上一步的聚合结果成为下一个聚合的输入,这就是管道
  • 第一个维度:管道聚合有很多不同类型,每种类型都与其他聚合计算不同的信息,但是可以将这些类型分为两类:
    • 父级:父级聚合的输出提供了一组管道聚合,它可以计算新的存储桶或新的聚合以添加到现有存储桶中。
    • 兄弟:同级聚合的输出提供的管道聚合,并且能够计算与该同级聚合处于同一级别的新聚合
  • 第二个维度:根据功能设计的意图
    • 比如前置聚合可能是Bucket聚合,后置的可能是基于Metric聚合,那么它就可以成为一类管道
    • 进而引出了:xxx bucket
  • Bucket聚合 -> Metric聚合
  • bucket聚合的结果,成为下一步metric聚合的输入
    • Average bucket
    • Min bucket
    • Max bucket
    • Sum bucket
    • Stats bucket
    • Extended stats bucket

27.2 Average bucket 聚合

  • 字段类型:
    • buckets_path:指定聚合的名称,支持多级嵌套聚合
    • gap_policy 当管道聚合遇到不存在的值,有点类似于term等聚合的(missing)时所采取的策略,可选择值为:skip、insert_zeros
    • skip:此选项将丢失的数据视为bucket不存在
      • 它将跳过桶并使用下一个可用值继续计算
    • format 用于格式化聚合桶的输出(key)
POST _search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        }
      }
    },
    "avg_monthly_sales": {
// tag::avg-bucket-agg-syntax[] 
      "avg_bucket": {
        "buckets_path": 
"sales_per_month>sales",
        "gap_policy": "skip",
        "format": "#,##0.00;(#,##0.00)"
      }
// end::avg-bucket-agg-syntax[] 
    }
  }
}
  • 返回

27.3 Stats bucket 聚合

POST /sales/_search
  {
    "size": 0,
    "aggs": {
      "sales_per_month": {
        "date_histogram": {
          "field": "date",
          "calendar_interval": "month"
        },
        "aggs": {
          "sales": {
            "sum": {
              "field": "price"
            }
          }
        }
      },
      "stats_monthly_sales": {
        "stats_bucket": {
          "buckets_path": 
  "sales_per_month>sales" 
        }
      }
    }
  }
  {
    "took": 11,
    "timed_out": false,
    "_shards": ...,
    "hits": ...,
    "aggregations": {
      "sales_per_month": {
        "buckets": [
          {
            "key_as_string": "2015/01/01 00:00:00",
            "key": 1420070400000,
            "doc_count": 3,
            "sales": {
              "value": 550.0
            }
          },
        {
          "key_as_string": "2015/02/01 00:00:00",
          "key": 1422748800000,
          "doc_count": 2,
          "sales": {
            "value": 60.0
          }
        },
        {
          "key_as_string": "2015/03/01 00:00:00",
          "key": 1425168000000,
          "doc_count": 2,
          "sales": {
            "value": 375.0
          } 
        } 
      ]
    },
    "stats_monthly_sales": {
      "count": 3,
      "min": 60.0,
      "max": 550.0,
      "avg": 328.3333333333333,
      "sum": 985.0
    } 
  } 
}

大数据视频推荐:
CSDN
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值