ElasticSearch | Aggregation | 聚合

Aggregation | 聚合

  • 聚合 ElasticSearch 除搜索以外,提供的针对 ES 数据进行统计分析的功能;
    • 实时性高;
    • Hadoop 是 T + 1 的;
  • 通过聚合,会得到数据的概览,是分析和总结全套数据,而不是寻找单个文档;
    • 尖沙咀和香港岛的房客数量;
    • 不同的价格区间,可预定的经济型酒店和五星级酒店的数量;
  • 高性能,只需要一条语句,就可以从 ElasticSearch 中得到分析结果;
    • 无需在客户端自己去实现分析逻辑;
  • Kibana 中大量的可视化报表都是基于 ElasticSearch 的聚合分析
    • 公司程序员的工作岗位分布;
    • 公司采用的编程框架分布;
    • 公司员工薪水分布;
    • 客户的地理位置分布;
    • 订单的增长情况;

Aggregation | 聚合 | 分类

  • Bucket Aggregation - 一系列满足特定条件的文档的集合;
  • Metic Aggregation - 一些数学运算,可以对文档字段进行统计分析;
  • Pipeline Aggregation - 对其他的聚合结果进行二次聚合;
  • Matrix Aggregation - 支持对多个字段的操作,并提供一个结果矩阵;

Bucket & Metric

select count(brand) from cars group by brand

  • Metric 可以理解为 SQL 中一系列统计方法,比如 count;
  • Bucket 可以理解为 SQL 中的一个 GROUP,根据一定的条件,把结果分成一个个的 GROUP;

Bucket | 举几个栗子

  • 商品可以分成三个 Bucket:高档,中档,低档;
  • 高档 Bucket 还可以分成三个 Bucket:好评,中评,差评;
按照目的地进行分桶统计
GET kibana_sample_data_flights/_search
{
    "size": 0,
    "aggs":{
        "flight_dest":{
            "terms":{
                "field":"DestCountry"
            }
        }
    }
}

Metric | 举几个栗子

  • Metic 会基于数据集计算结果,除了支持在字段上进行计算,同样也支持在脚本(painless script)产生的结果之上进行计算;
  • 大多数 Metric 是数学计算,仅输出一个值:min / max / sum / avg / cardinality;
  • 部分 Metric 支持输出多个值:stats / percentiles / percentile_ranks;
查看航班目的地的统计信息,增加平均,最高,最低价格
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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容