网站美工,应聘网站运营建设面试,网页设计的实验总结,威海做网站的公司有哪些#x1f44b; 你好#xff0c;数据分析新手#xff01;
你是否熟悉 Excel 的透视表#xff1f;它能轻松地对数据进行分组、求和、求平均#xff0c;让你从一堆乱麻中快速看出端倪。
今天#xff0c;我要告诉你一个好消息#xff1a;Elasticsearch (ES) 也有一个“超级透… 你好数据分析新手你是否熟悉 Excel 的透视表它能轻松地对数据进行分组、求和、求平均让你从一堆乱麻中快速看出端倪。今天我要告诉你一个好消息Elasticsearch (ES) 也有一个“超级透视表”功能它叫做“聚合 (Aggregation)”。如果说查询 (query) 是从 ES 的“图书馆”里找书那么聚合 (aggregation) 就是对这些书进行统计分析比如“哪个作者的书最多”、“平均每本书有多少页”。这篇文章将带你用最直观的方式入门 ES 的聚合功能。️ 聚合的“菜谱”基本结构和查询类似聚合请求也有一个标准的 JSON 结构。我们同样通过_search端点发送但这次我们把聚合指令放在aggs(aggregations 的缩写) 字段里。# 基本结构GET /你的索引名称/_search{size:0, // 设置为0表示不返回具体文档只返回聚合结果更高效aggs:{//aggs是aggregations的缩写你给结果起的名字:{// 比如avg_price聚合类型:{// 比如avg字段:字段名// 比如price}}}}别担心下面的例子会让这个“菜谱”变得生动起来。 核心聚合类型你的“数据积木”聚合主要分为两大类理解了它们你就理解了聚合的精髓。1. 桶聚合 (Bucket Aggregation) - “分组”这是什么桶聚合就像 Excel 透视表里的“行”或“列”它负责将数据分门别类地放进不同的“桶”里。例如按“商品类别”分组每个类别就是一个“桶”。最常用的桶聚合termsterms聚合会为你统计每个“桶”里有多少文档。场景 统计一个“商品”索引中每个**类别(category)**下有多少商品。GET/products/_search{size:0,aggs:{products_by_category:{// 我们给这个聚合结果起个名字terms:{field:category.keyword// 按 category 字段分组}}}}category.keyword 通常对文本字段进行分组时我们使用.keyword后缀以确保 ES 对整个词进行精确分组而不是分词。返回结果可能像这样{...aggregations:{products_by_category:{buckets:[{key:电子产品,doc_count:150},{key:家居用品,doc_count:80},{key:图书,doc_count:200}]}}}看是不是很清晰ES 告诉你“电子产品”这个桶里有150个商品“家居用品”有80个。这就像透视表的行标签和计数2. 指标聚合 (Metrics Aggregation) - “计算”这是什么指标聚合就像 Excel 透视表里的“值”区域它负责对放进“桶”里的数据进行数学计算。例如求平均值、总和、最大值、最小值等。常用的指标聚合avg计算平均值sum计算总和max/min计算最大/最小值cardinality计算不重复值的数量类似COUNT(DISTINCT column)场景 计算所有商品的平均价格(price)。GET/products/_search{size:0,aggs:{average_price:{// 结果名avg:{// 聚合类型平均值field:price// 要计算的字段}}}}返回结果可能像这样{...aggregations:{average_price:{value:256.8// 直接返回计算出的值}}} 组合起来像透视表一样工作现在让我们把“桶”和“指标”组合起来完成一个真正的“透视表”操作。终极场景统计每个商品类别下的平均价格是多少这就像在 Excel 透视表里行商品类别 (Category) -terms桶聚合值价格的平均值 (Average of Price) -avg指标聚合ES 查询语句GET/products/_search{size:0,aggs:{avg_price_by_category:{// 第一层聚合按类别分组桶terms:{field:category.keyword},aggs:{// 在每个类别的“桶”内部再进行子聚合avg_price:{// 给子聚合起个名字avg:{// 子聚合类型计算平均值field:price}}}}}}返回结果可能像这样{...aggregations:{avg_price_by_category:{buckets:[{key:电子产品,// 桶1电子产品doc_count:150,avg_price:{value:1200.50}// 桶1的平均值},{key:家居用品,// 桶2家居用品doc_count:80,avg_price:{value:150.00}// 桶2的平均值},{key:图书,// 桶3图书doc_count:200,avg_price:{value:45.80}// 桶3的平均值}]}}}这不就是你想要的透视表结果吗清晰、直观一目了然。 总结与下一步恭喜你你已经掌握了 ES 聚合的核心思想桶聚合 (terms)像透视表的行/列用来分组。指标聚合 (avg,sum等)像透视表的值用来计算。组合使用在桶聚合内部嵌套指标聚合实现强大的分层分析。你的入门实践路径打开 Kibana 的Dev Tools。找一个你熟悉的索引比如网站日志、商品数据等。尝试用terms聚合对某个字段如国家、城市、分类进行分组。再尝试在分组的基础上计算某个数值字段如价格、访问量的平均值或总和。ES 的聚合功能远不止于此还有日期直方图 (date_histogram)、过滤 (filter)、嵌套聚合等更高级的玩法。但掌握了今天的“桶指标”组合你已经能解决 80% 的数据分析需求了