3.14-Elasticsearch聚合分析简介

什么是聚合(Aggregation)

  • ElasticSearch除搜索以外,提供针对ES数据进行分析的功能

    • 实时性高

    • Hadoop (T+1)

  • 通过聚合,我们会得到一个数据的概览, 是分析和总结全套的数据,而不是寻找单个文档

  • 高性能,只需要一条语句,就可以从ElasticSearch得到分析结果

    • 无需在客户端自己去实现分析逻辑

Kibana可视化报表 - 聚合分析

image.png
  • 公司程序员的工作岗位分布

  • 公司采用的编程框架分布

  • 公司员工薪水分布

  • 客户的地理位置分布

  • 订单的增长情况

  • 等等...

集合的分类

  • Bucket Aggregation - 一些列满足特定条件的文档的集合

  • Metric Aggregation - 一些数学运算,可以对文档字段进行统计分析

  • Pipeline Aggregation - 对其他的聚合结果进行二次聚合

  • Matrix Aggregation - 支持对多个字段的操作并提供一个结果矩阵

Bucket & Metric

image.png

Bucket

image.png
  • 一些例子

    • 杭州属于浙江 / 一个演员属于男性或女性

    • 嵌套关系 - 杭州属于浙江属于中国属于亚洲

  • ElasticSearch提供了很多类型的Bucket,帮助你用多种方式划分文档

    • Term&Range (时间/年龄区间/地理)

Metric

  • Metric会基于数据计算结果,除了支持在字段上进行计算,同样也支持在脚本(painless script)产生的结果之上进行计算

  • 大多数Metric是数学计算,仅输出一个值

    • min/max/sum/avg/cardinality
  • 部分metric支持输出多个数值

    • stats/precentiles/percentile_rank

一个Bucket的例子

查看航班目的地的统计信息


image.png

加入Metrics

查看航班上的地的统计信息,增加均价,最高最低价格


image.png

嵌套

查看航班上的地的统计信息,平均票价,以及天气状况


image.png

课程Demo

  • 需要通过Kibana导入Sample Data的飞机航班数据。具体参考“2.2节-Kibana的安装与界面快速浏览”
#按照目的地进行分桶统计
GET kibana_sample_data_flights/_search
{
    "size": 0,
    "aggs":{
        "flight_dest":{
            "terms":{
                "field":"DestCountry"
            }
        }
    }
}



#查看航班目的地的统计信息,增加平均,最高最低价格
GET kibana_sample_data_flights/_search
{
    "size": 0,
    "aggs":{
        "flight_dest":{
            "terms":{
                "field":"DestCountry"
            },
            "aggs":{
                "avg_price":{
                    "avg":{
                        "field":"AvgTicketPrice"
                    }
                },
                "max_price":{
                    "max":{
                        "field":"AvgTicketPrice"
                    }
                },
                "min_price":{
                    "min":{
                        "field":"AvgTicketPrice"
                    }
                }
            }
        }
    }
}



#价格统计信息+天气信息
GET kibana_sample_data_flights/_search
{
    "size": 0,
    "aggs":{
        "flight_dest":{
            "terms":{
                "field":"DestCountry"
            },
            "aggs":{
                "stats_price":{
                    "stats":{
                        "field":"AvgTicketPrice"
                    }
                },
                "wather":{
                  "terms": {
                    "field": "DestWeather",
                    "size": 5
                  }
                }

            }
        }
    }
}

相关阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容