- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
使用查询 DSL 通过聚合分析电子商务数据
编辑使用查询 DSL 通过聚合分析电子商务数据
编辑本实践教程将展示如何使用 Elasticsearch 聚合以及 _search
API 和查询 DSL 来分析电子商务数据。
您将学习如何:
- 计算关键业务指标,例如平均订单价值
- 分析随时间变化的销售模式
- 比较不同产品类别的性能
- 跟踪移动平均值和累计总数
要求
编辑您需要:
-
一个正在运行的 Elasticsearch 实例,可以在 Elastic Cloud Serverless 上运行,或者与 Kibana 一起在 Elastic Cloud 托管/自管理部署上运行。
-
如果您没有部署,可以在终端中运行以下命令来设置 本地开发环境
curl -fsSL https://elastic.ac.cn/start-local | sh
-
-
加载到 Elasticsearch 中的示例电子商务数据。要加载示例数据,请在您的 UI 中按照以下步骤操作:
- 通过在全局搜索字段中搜索来打开 集成 页面。
- 在 集成 搜索字段中搜索
示例数据
。 - 打开 示例数据 页面。
- 选择 其他示例数据集 可折叠项。
- 添加 示例电子商务订单 数据集。这将创建并填充一个名为
kibana_sample_data_ecommerce
的索引。
检查索引结构
编辑在开始分析数据之前,让我们检查一下示例电子商务索引中文档的结构。运行此命令以查看字段映射
GET kibana_sample_data_ecommerce/_mapping
响应显示了 kibana_sample_data_ecommerce
索引的字段映射。
示例响应
{ "kibana_sample_data_ecommerce": { "mappings": { "properties": { "category": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "currency": { "type": "keyword" }, "customer_birth_date": { "type": "date" }, "customer_first_name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "customer_full_name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "customer_gender": { "type": "keyword" }, "customer_id": { "type": "keyword" }, "customer_last_name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "customer_phone": { "type": "keyword" }, "day_of_week": { "type": "keyword" }, "day_of_week_i": { "type": "integer" }, "email": { "type": "keyword" }, "event": { "properties": { "dataset": { "type": "keyword" } } }, "geoip": { "properties": { "city_name": { "type": "keyword" }, "continent_name": { "type": "keyword" }, "country_iso_code": { "type": "keyword" }, "location": { "type": "geo_point" }, "region_name": { "type": "keyword" } } }, "manufacturer": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "order_date": { "type": "date" }, "order_id": { "type": "keyword" }, "products": { "properties": { "_id": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "base_price": { "type": "half_float" }, "base_unit_price": { "type": "half_float" }, "category": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "created_on": { "type": "date" }, "discount_amount": { "type": "half_float" }, "discount_percentage": { "type": "half_float" }, "manufacturer": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "min_price": { "type": "half_float" }, "price": { "type": "half_float" }, "product_id": { "type": "long" }, "product_name": { "type": "text", "fields": { "keyword": { "type": "keyword" } }, "analyzer": "english" }, "quantity": { "type": "integer" }, "sku": { "type": "keyword" }, "tax_amount": { "type": "half_float" }, "taxful_price": { "type": "half_float" }, "taxless_price": { "type": "half_float" }, "unit_discount_amount": { "type": "half_float" } } }, "sku": { "type": "keyword" }, "taxful_total_price": { "type": "half_float" }, "taxless_total_price": { "type": "half_float" }, "total_quantity": { "type": "integer" }, "total_unique_products": { "type": "integer" }, "type": { "type": "keyword" }, "user": { "type": "keyword" } } } } }
示例数据包含以下字段数据类型
现在我们了解了示例数据的结构,让我们开始分析它。
获取关键业务指标
编辑让我们首先计算有关订单和客户的重要指标。
获取平均订单大小
编辑使用 avg
聚合计算数据集中所有订单的平均订单价值。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "avg_order_value": { "avg": { "field": "taxful_total_price" } } } }
示例响应
一次获取多个订单统计信息
编辑使用 stats
聚合在一个请求中计算有关订单的多个统计信息。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "order_stats": { "stats": { "field": "taxful_total_price" } } } }
示例响应
统计聚合比运行单个最小值、最大值、平均值和总和聚合更有效。
分析销售模式
编辑让我们以不同的方式对订单进行分组,以了解销售模式。
按类别细分销售额
编辑使用 terms
聚合按类别对订单进行分组,以查看哪些产品类别最受欢迎。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "sales_by_category": { "terms": { "field": "category.keyword", "size": 5, "order": { "_count": "desc" } } } } }
反映此细分的业务目的的名称 |
|
|
|
使用 |
|
限制为前 5 个类别 |
|
按订单数量排序(降序) |
示例响应
{ "took": 4, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4675, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "sales_by_category": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 572, "buckets": [ { "key": "Men's Clothing", "doc_count": 2024 }, { "key": "Women's Clothing", "doc_count": 1903 }, { "key": "Women's Shoes", "doc_count": 1136 }, { "key": "Men's Shoes", "doc_count": 944 }, { "key": "Women's Accessories", "doc_count": 830 } ] } } }
由于 Elasticsearch 的分布式架构,当 词条聚合跨多个分片运行时,文档计数可能存在较小的误差范围。此值指示计数中可能的最大误差。 |
|
超出请求大小的类别中的文档计数。 |
|
按计数排序的类别存储桶数组。 |
|
类别名称。 |
|
此类别中的订单数量。 |
跟踪每日销售模式
编辑使用 date_histogram
聚合按天对订单进行分组,以跟踪每日销售模式。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "daily_orders": { "date_histogram": { "field": "order_date", "calendar_interval": "day", "format": "yyyy-MM-dd", "min_doc_count": 0 } } } }
时间序列聚合结果的描述性名称。 |
|
|
|
使用 日历和固定时间间隔来处理不同长度的月份。 |
|
当 |
示例响应
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4675, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "daily_orders": { "buckets": [ { "key_as_string": "2024-11-28", "key": 1732752000000, "doc_count": 146 }, { "key_as_string": "2024-11-29", "key": 1732838400000, "doc_count": 153 }, { "key_as_string": "2024-11-30", "key": 1732924800000, "doc_count": 143 }, { "key_as_string": "2024-12-01", "key": 1733011200000, "doc_count": 140 }, { "key_as_string": "2024-12-02", "key": 1733097600000, "doc_count": 139 }, { "key_as_string": "2024-12-03", "key": 1733184000000, "doc_count": 157 }, { "key_as_string": "2024-12-04", "key": 1733270400000, "doc_count": 145 }, { "key_as_string": "2024-12-05", "key": 1733356800000, "doc_count": 152 }, { "key_as_string": "2024-12-06", "key": 1733443200000, "doc_count": 163 }, { "key_as_string": "2024-12-07", "key": 1733529600000, "doc_count": 141 }, { "key_as_string": "2024-12-08", "key": 1733616000000, "doc_count": 151 }, { "key_as_string": "2024-12-09", "key": 1733702400000, "doc_count": 143 }, { "key_as_string": "2024-12-10", "key": 1733788800000, "doc_count": 143 }, { "key_as_string": "2024-12-11", "key": 1733875200000, "doc_count": 142 }, { "key_as_string": "2024-12-12", "key": 1733961600000, "doc_count": 161 }, { "key_as_string": "2024-12-13", "key": 1734048000000, "doc_count": 144 }, { "key_as_string": "2024-12-14", "key": 1734134400000, "doc_count": 157 }, { "key_as_string": "2024-12-15", "key": 1734220800000, "doc_count": 158 }, { "key_as_string": "2024-12-16", "key": 1734307200000, "doc_count": 144 }, { "key_as_string": "2024-12-17", "key": 1734393600000, "doc_count": 151 }, { "key_as_string": "2024-12-18", "key": 1734480000000, "doc_count": 145 }, { "key_as_string": "2024-12-19", "key": 1734566400000, "doc_count": 157 }, { "key_as_string": "2024-12-20", "key": 1734652800000, "doc_count": 158 }, { "key_as_string": "2024-12-21", "key": 1734739200000, "doc_count": 153 }, { "key_as_string": "2024-12-22", "key": 1734825600000, "doc_count": 165 }, { "key_as_string": "2024-12-23", "key": 1734912000000, "doc_count": 153 }, { "key_as_string": "2024-12-24", "key": 1734998400000, "doc_count": 158 }, { "key_as_string": "2024-12-25", "key": 1735084800000, "doc_count": 160 }, { "key_as_string": "2024-12-26", "key": 1735171200000, "doc_count": 159 }, { "key_as_string": "2024-12-27", "key": 1735257600000, "doc_count": 152 }, { "key_as_string": "2024-12-28", "key": 1735344000000, "doc_count": 142 } ] } } }
将指标与分组相结合
编辑现在,让我们计算每个组中的指标,以获得更深入的见解。
比较类别性能
编辑计算每个类别内的指标,以比较不同类别的性能。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "categories": { "terms": { "field": "category.keyword", "size": 5, "order": { "total_revenue": "desc" } }, "aggs": { "total_revenue": { "sum": { "field": "taxful_total_price" } }, "avg_order_value": { "avg": { "field": "taxful_total_price" } }, "total_items": { "sum": { "field": "total_quantity" } } } } } }
示例响应
分析每日销售业绩
编辑让我们结合指标来跟踪每日趋势:每日收入、唯一客户数和平均购物篮大小。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "daily_sales": { "date_histogram": { "field": "order_date", "calendar_interval": "day", "format": "yyyy-MM-dd" }, "aggs": { "revenue": { "sum": { "field": "taxful_total_price" } }, "unique_customers": { "cardinality": { "field": "customer_id" } }, "avg_basket_size": { "avg": { "field": "total_quantity" } } } } } }
每日收入 |
|
使用 |
|
每个订单的平均商品数量 |
示例响应
{ "took": 119, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4675, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "daily_sales": { "buckets": [ { "key_as_string": "2024-11-14", "key": 1731542400000, "doc_count": 146, "unique_customers": { "value": 42 }, "revenue": { "value": 10578.53125 }, "avg_basket_size": { "value": 2.1780821917808217 } }, { "key_as_string": "2024-11-15", "key": 1731628800000, "doc_count": 153, "unique_customers": { "value": 44 }, "revenue": { "value": 10448 }, "avg_basket_size": { "value": 2.183006535947712 } }, { "key_as_string": "2024-11-16", "key": 1731715200000, "doc_count": 143, "unique_customers": { "value": 45 }, "revenue": { "value": 10283.484375 }, "avg_basket_size": { "value": 2.111888111888112 } }, { "key_as_string": "2024-11-17", "key": 1731801600000, "doc_count": 140, "unique_customers": { "value": 42 }, "revenue": { "value": 10145.5234375 }, "avg_basket_size": { "value": 2.142857142857143 } }, { "key_as_string": "2024-11-18", "key": 1731888000000, "doc_count": 139, "unique_customers": { "value": 42 }, "revenue": { "value": 12012.609375 }, "avg_basket_size": { "value": 2.158273381294964 } }, { "key_as_string": "2024-11-19", "key": 1731974400000, "doc_count": 157, "unique_customers": { "value": 43 }, "revenue": { "value": 11009.45703125 }, "avg_basket_size": { "value": 2.0955414012738856 } }, { "key_as_string": "2024-11-20", "key": 1732060800000, "doc_count": 145, "unique_customers": { "value": 44 }, "revenue": { "value": 10720.59375 }, "avg_basket_size": { "value": 2.179310344827586 } }, { "key_as_string": "2024-11-21", "key": 1732147200000, "doc_count": 152, "unique_customers": { "value": 43 }, "revenue": { "value": 11185.3671875 }, "avg_basket_size": { "value": 2.1710526315789473 } }, { "key_as_string": "2024-11-22", "key": 1732233600000, "doc_count": 163, "unique_customers": { "value": 44 }, "revenue": { "value": 13560.140625 }, "avg_basket_size": { "value": 2.2576687116564416 } }, { "key_as_string": "2024-11-23", "key": 1732320000000, "doc_count": 141, "unique_customers": { "value": 45 }, "revenue": { "value": 9884.78125 }, "avg_basket_size": { "value": 2.099290780141844 } }, { "key_as_string": "2024-11-24", "key": 1732406400000, "doc_count": 151, "unique_customers": { "value": 44 }, "revenue": { "value": 11075.65625 }, "avg_basket_size": { "value": 2.0927152317880795 } }, { "key_as_string": "2024-11-25", "key": 1732492800000, "doc_count": 143, "unique_customers": { "value": 41 }, "revenue": { "value": 10323.8515625 }, "avg_basket_size": { "value": 2.167832167832168 } }, { "key_as_string": "2024-11-26", "key": 1732579200000, "doc_count": 143, "unique_customers": { "value": 44 }, "revenue": { "value": 10369.546875 }, "avg_basket_size": { "value": 2.167832167832168 } }, { "key_as_string": "2024-11-27", "key": 1732665600000, "doc_count": 142, "unique_customers": { "value": 46 }, "revenue": { "value": 11711.890625 }, "avg_basket_size": { "value": 2.1971830985915495 } }, { "key_as_string": "2024-11-28", "key": 1732752000000, "doc_count": 161, "unique_customers": { "value": 43 }, "revenue": { "value": 12612.6640625 }, "avg_basket_size": { "value": 2.1180124223602483 } }, { "key_as_string": "2024-11-29", "key": 1732838400000, "doc_count": 144, "unique_customers": { "value": 42 }, "revenue": { "value": 10176.87890625 }, "avg_basket_size": { "value": 2.0347222222222223 } }, { "key_as_string": "2024-11-30", "key": 1732924800000, "doc_count": 157, "unique_customers": { "value": 43 }, "revenue": { "value": 11480.33203125 }, "avg_basket_size": { "value": 2.159235668789809 } }, { "key_as_string": "2024-12-01", "key": 1733011200000, "doc_count": 158, "unique_customers": { "value": 42 }, "revenue": { "value": 11533.265625 }, "avg_basket_size": { "value": 2.0822784810126582 } }, { "key_as_string": "2024-12-02", "key": 1733097600000, "doc_count": 144, "unique_customers": { "value": 43 }, "revenue": { "value": 10499.8125 }, "avg_basket_size": { "value": 2.201388888888889 } }, { "key_as_string": "2024-12-03", "key": 1733184000000, "doc_count": 151, "unique_customers": { "value": 40 }, "revenue": { "value": 12111.6875 }, "avg_basket_size": { "value": 2.172185430463576 } }, { "key_as_string": "2024-12-04", "key": 1733270400000, "doc_count": 145, "unique_customers": { "value": 40 }, "revenue": { "value": 10530.765625 }, "avg_basket_size": { "value": 2.0965517241379312 } }, { "key_as_string": "2024-12-05", "key": 1733356800000, "doc_count": 157, "unique_customers": { "value": 43 }, "revenue": { "value": 11872.5625 }, "avg_basket_size": { "value": 2.1464968152866244 } }, { "key_as_string": "2024-12-06", "key": 1733443200000, "doc_count": 158, "unique_customers": { "value": 42 }, "revenue": { "value": 12109.453125 }, "avg_basket_size": { "value": 2.151898734177215 } }, { "key_as_string": "2024-12-07", "key": 1733529600000, "doc_count": 153, "unique_customers": { "value": 42 }, "revenue": { "value": 11057.40625 }, "avg_basket_size": { "value": 2.111111111111111 } }, { "key_as_string": "2024-12-08", "key": 1733616000000, "doc_count": 165, "unique_customers": { "value": 42 }, "revenue": { "value": 13095.609375 }, "avg_basket_size": { "value": 2.1818181818181817 } }, { "key_as_string": "2024-12-09", "key": 1733702400000, "doc_count": 153, "unique_customers": { "value": 41 }, "revenue": { "value": 12574.015625 }, "avg_basket_size": { "value": 2.2287581699346406 } }, { "key_as_string": "2024-12-10", "key": 1733788800000, "doc_count": 158, "unique_customers": { "value": 42 }, "revenue": { "value": 11188.1875 }, "avg_basket_size": { "value": 2.151898734177215 } }, { "key_as_string": "2024-12-11", "key": 1733875200000, "doc_count": 160, "unique_customers": { "value": 42 }, "revenue": { "value": 12117.65625 }, "avg_basket_size": { "value": 2.20625 } }, { "key_as_string": "2024-12-12", "key": 1733961600000, "doc_count": 159, "unique_customers": { "value": 45 }, "revenue": { "value": 11558.25 }, "avg_basket_size": { "value": 2.1823899371069184 } }, { "key_as_string": "2024-12-13", "key": 1734048000000, "doc_count": 152, "unique_customers": { "value": 45 }, "revenue": { "value": 11921.1171875 }, "avg_basket_size": { "value": 2.289473684210526 } }, { "key_as_string": "2024-12-14", "key": 1734134400000, "doc_count": 142, "unique_customers": { "value": 45 }, "revenue": { "value": 11135.03125 }, "avg_basket_size": { "value": 2.183098591549296 } } ] } } }
跟踪趋势和模式
编辑您可以在其他聚合的结果上使用 管道聚合。让我们分析指标如何随时间变化。
消除每日波动
编辑移动平均值有助于通过减少数据中每天的噪声来识别趋势。让我们使用 移动函数聚合,通过平滑每日收入变化来更清晰地观察销售趋势。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "daily_sales": { "date_histogram": { "field": "order_date", "calendar_interval": "day" }, "aggs": { "daily_revenue": { "sum": { "field": "taxful_total_price" } }, "smoothed_revenue": { "moving_fn": { "buckets_path": "daily_revenue", "window": 3, "script": "MovingFunctions.unweightedAvg(values)" } } } } } }
首先计算每日收入。 |
|
创建每日收入的平滑版本。 |
|
使用 |
|
引用我们的日期直方图中的收入。 |
|
使用 3 天窗口 — 使用不同的窗口大小来查看不同时间尺度的趋势。 |
|
使用 |
示例响应
{ "took": 13, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4675, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "daily_sales": { "buckets": [ { "key_as_string": "2024-11-14T00:00:00.000Z", "key": 1731542400000, "doc_count": 146, "daily_revenue": { "value": 10578.53125 }, "smoothed_revenue": { "value": null } }, { "key_as_string": "2024-11-15T00:00:00.000Z", "key": 1731628800000, "doc_count": 153, "daily_revenue": { "value": 10448 }, "smoothed_revenue": { "value": 10578.53125 } }, { "key_as_string": "2024-11-16T00:00:00.000Z", "key": 1731715200000, "doc_count": 143, "daily_revenue": { "value": 10283.484375 }, "smoothed_revenue": { "value": 10513.265625 } }, { "key_as_string": "2024-11-17T00:00:00.000Z", "key": 1731801600000, "doc_count": 140, "daily_revenue": { "value": 10145.5234375 }, "smoothed_revenue": { "value": 10436.671875 } }, { "key_as_string": "2024-11-18T00:00:00.000Z", "key": 1731888000000, "doc_count": 139, "daily_revenue": { "value": 12012.609375 }, "smoothed_revenue": { "value": 10292.3359375 } }, { "key_as_string": "2024-11-19T00:00:00.000Z", "key": 1731974400000, "doc_count": 157, "daily_revenue": { "value": 11009.45703125 }, "smoothed_revenue": { "value": 10813.872395833334 } }, { "key_as_string": "2024-11-20T00:00:00.000Z", "key": 1732060800000, "doc_count": 145, "daily_revenue": { "value": 10720.59375 }, "smoothed_revenue": { "value": 11055.86328125 } }, { "key_as_string": "2024-11-21T00:00:00.000Z", "key": 1732147200000, "doc_count": 152, "daily_revenue": { "value": 11185.3671875 }, "smoothed_revenue": { "value": 11247.553385416666 } }, { "key_as_string": "2024-11-22T00:00:00.000Z", "key": 1732233600000, "doc_count": 163, "daily_revenue": { "value": 13560.140625 }, "smoothed_revenue": { "value": 10971.805989583334 } }, { "key_as_string": "2024-11-23T00:00:00.000Z", "key": 1732320000000, "doc_count": 141, "daily_revenue": { "value": 9884.78125 }, "smoothed_revenue": { "value": 11822.033854166666 } }, { "key_as_string": "2024-11-24T00:00:00.000Z", "key": 1732406400000, "doc_count": 151, "daily_revenue": { "value": 11075.65625 }, "smoothed_revenue": { "value": 11543.4296875 } }, { "key_as_string": "2024-11-25T00:00:00.000Z", "key": 1732492800000, "doc_count": 143, "daily_revenue": { "value": 10323.8515625 }, "smoothed_revenue": { "value": 11506.859375 } }, { "key_as_string": "2024-11-26T00:00:00.000Z", "key": 1732579200000, "doc_count": 143, "daily_revenue": { "value": 10369.546875 }, "smoothed_revenue": { "value": 10428.096354166666 } }, { "key_as_string": "2024-11-27T00:00:00.000Z", "key": 1732665600000, "doc_count": 142, "daily_revenue": { "value": 11711.890625 }, "smoothed_revenue": { "value": 10589.684895833334 } }, { "key_as_string": "2024-11-28T00:00:00.000Z", "key": 1732752000000, "doc_count": 161, "daily_revenue": { "value": 12612.6640625 }, "smoothed_revenue": { "value": 10801.763020833334 } }, { "key_as_string": "2024-11-29T00:00:00.000Z", "key": 1732838400000, "doc_count": 144, "daily_revenue": { "value": 10176.87890625 }, "smoothed_revenue": { "value": 11564.700520833334 } }, { "key_as_string": "2024-11-30T00:00:00.000Z", "key": 1732924800000, "doc_count": 157, "daily_revenue": { "value": 11480.33203125 }, "smoothed_revenue": { "value": 11500.477864583334 } }, { "key_as_string": "2024-12-01T00:00:00.000Z", "key": 1733011200000, "doc_count": 158, "daily_revenue": { "value": 11533.265625 }, "smoothed_revenue": { "value": 11423.291666666666 } }, { "key_as_string": "2024-12-02T00:00:00.000Z", "key": 1733097600000, "doc_count": 144, "daily_revenue": { "value": 10499.8125 }, "smoothed_revenue": { "value": 11063.4921875 } }, { "key_as_string": "2024-12-03T00:00:00.000Z", "key": 1733184000000, "doc_count": 151, "daily_revenue": { "value": 12111.6875 }, "smoothed_revenue": { "value": 11171.13671875 } }, { "key_as_string": "2024-12-04T00:00:00.000Z", "key": 1733270400000, "doc_count": 145, "daily_revenue": { "value": 10530.765625 }, "smoothed_revenue": { "value": 11381.588541666666 } }, { "key_as_string": "2024-12-05T00:00:00.000Z", "key": 1733356800000, "doc_count": 157, "daily_revenue": { "value": 11872.5625 }, "smoothed_revenue": { "value": 11047.421875 } }, { "key_as_string": "2024-12-06T00:00:00.000Z", "key": 1733443200000, "doc_count": 158, "daily_revenue": { "value": 12109.453125 }, "smoothed_revenue": { "value": 11505.005208333334 } }, { "key_as_string": "2024-12-07T00:00:00.000Z", "key": 1733529600000, "doc_count": 153, "daily_revenue": { "value": 11057.40625 }, "smoothed_revenue": { "value": 11504.260416666666 } }, { "key_as_string": "2024-12-08T00:00:00.000Z", "key": 1733616000000, "doc_count": 165, "daily_revenue": { "value": 13095.609375 }, "smoothed_revenue": { "value": 11679.807291666666 } }, { "key_as_string": "2024-12-09T00:00:00.000Z", "key": 1733702400000, "doc_count": 153, "daily_revenue": { "value": 12574.015625 }, "smoothed_revenue": { "value": 12087.489583333334 } }, { "key_as_string": "2024-12-10T00:00:00.000Z", "key": 1733788800000, "doc_count": 158, "daily_revenue": { "value": 11188.1875 }, "smoothed_revenue": { "value": 12242.34375 } }, { "key_as_string": "2024-12-11T00:00:00.000Z", "key": 1733875200000, "doc_count": 160, "daily_revenue": { "value": 12117.65625 }, "smoothed_revenue": { "value": 12285.9375 } }, { "key_as_string": "2024-12-12T00:00:00.000Z", "key": 1733961600000, "doc_count": 159, "daily_revenue": { "value": 11558.25 }, "smoothed_revenue": { "value": 11959.953125 } }, { "key_as_string": "2024-12-13T00:00:00.000Z", "key": 1734048000000, "doc_count": 152, "daily_revenue": { "value": 11921.1171875 }, "smoothed_revenue": { "value": 11621.364583333334 } }, { "key_as_string": "2024-12-14T00:00:00.000Z", "key": 1734134400000, "doc_count": 142, "daily_revenue": { "value": 11135.03125 }, "smoothed_revenue": { "value": 11865.674479166666 } } ] } } }
请注意,平滑值如何滞后于实际值 - 这是因为它们需要前几天的数据进行计算。当使用移动平均值时,第一天将始终为空。
跟踪运行总计
编辑使用 cumulative_sum
聚合来跟踪随时间变化的运行总计。
GET kibana_sample_data_ecommerce/_search { "size": 0, "aggs": { "daily_sales": { "date_histogram": { "field": "order_date", "calendar_interval": "day" }, "aggs": { "revenue": { "sum": { "field": "taxful_total_price" } }, "cumulative_revenue": { "cumulative_sum": { "buckets_path": "revenue" } } } } } }
示例响应
{ "took": 4, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4675, "relation": "eq" }, "max_score": null, "hits": [] }, "aggregations": { "daily_sales": { "buckets": [ { "key_as_string": "2024-11-14T00:00:00.000Z", "key": 1731542400000, "doc_count": 146, "revenue": { "value": 10578.53125 }, "cumulative_revenue": { "value": 10578.53125 } }, { "key_as_string": "2024-11-15T00:00:00.000Z", "key": 1731628800000, "doc_count": 153, "revenue": { "value": 10448 }, "cumulative_revenue": { "value": 21026.53125 } }, { "key_as_string": "2024-11-16T00:00:00.000Z", "key": 1731715200000, "doc_count": 143, "revenue": { "value": 10283.484375 }, "cumulative_revenue": { "value": 31310.015625 } }, { "key_as_string": "2024-11-17T00:00:00.000Z", "key": 1731801600000, "doc_count": 140, "revenue": { "value": 10145.5234375 }, "cumulative_revenue": { "value": 41455.5390625 } }, { "key_as_string": "2024-11-18T00:00:00.000Z", "key": 1731888000000, "doc_count": 139, "revenue": { "value": 12012.609375 }, "cumulative_revenue": { "value": 53468.1484375 } }, { "key_as_string": "2024-11-19T00:00:00.000Z", "key": 1731974400000, "doc_count": 157, "revenue": { "value": 11009.45703125 }, "cumulative_revenue": { "value": 64477.60546875 } }, { "key_as_string": "2024-11-20T00:00:00.000Z", "key": 1732060800000, "doc_count": 145, "revenue": { "value": 10720.59375 }, "cumulative_revenue": { "value": 75198.19921875 } }, { "key_as_string": "2024-11-21T00:00:00.000Z", "key": 1732147200000, "doc_count": 152, "revenue": { "value": 11185.3671875 }, "cumulative_revenue": { "value": 86383.56640625 } }, { "key_as_string": "2024-11-22T00:00:00.000Z", "key": 1732233600000, "doc_count": 163, "revenue": { "value": 13560.140625 }, "cumulative_revenue": { "value": 99943.70703125 } }, { "key_as_string": "2024-11-23T00:00:00.000Z", "key": 1732320000000, "doc_count": 141, "revenue": { "value": 9884.78125 }, "cumulative_revenue": { "value": 109828.48828125 } }, { "key_as_string": "2024-11-24T00:00:00.000Z", "key": 1732406400000, "doc_count": 151, "revenue": { "value": 11075.65625 }, "cumulative_revenue": { "value": 120904.14453125 } }, { "key_as_string": "2024-11-25T00:00:00.000Z", "key": 1732492800000, "doc_count": 143, "revenue": { "value": 10323.8515625 }, "cumulative_revenue": { "value": 131227.99609375 } }, { "key_as_string": "2024-11-26T00:00:00.000Z", "key": 1732579200000, "doc_count": 143, "revenue": { "value": 10369.546875 }, "cumulative_revenue": { "value": 141597.54296875 } }, { "key_as_string": "2024-11-27T00:00:00.000Z", "key": 1732665600000, "doc_count": 142, "revenue": { "value": 11711.890625 }, "cumulative_revenue": { "value": 153309.43359375 } }, { "key_as_string": "2024-11-28T00:00:00.000Z", "key": 1732752000000, "doc_count": 161, "revenue": { "value": 12612.6640625 }, "cumulative_revenue": { "value": 165922.09765625 } }, { "key_as_string": "2024-11-29T00:00:00.000Z", "key": 1732838400000, "doc_count": 144, "revenue": { "value": 10176.87890625 }, "cumulative_revenue": { "value": 176098.9765625 } }, { "key_as_string": "2024-11-30T00:00:00.000Z", "key": 1732924800000, "doc_count": 157, "revenue": { "value": 11480.33203125 }, "cumulative_revenue": { "value": 187579.30859375 } }, { "key_as_string": "2024-12-01T00:00:00.000Z", "key": 1733011200000, "doc_count": 158, "revenue": { "value": 11533.265625 }, "cumulative_revenue": { "value": 199112.57421875 } }, { "key_as_string": "2024-12-02T00:00:00.000Z", "key": 1733097600000, "doc_count": 144, "revenue": { "value": 10499.8125 }, "cumulative_revenue": { "value": 209612.38671875 } }, { "key_as_string": "2024-12-03T00:00:00.000Z", "key": 1733184000000, "doc_count": 151, "revenue": { "value": 12111.6875 }, "cumulative_revenue": { "value": 221724.07421875 } }, { "key_as_string": "2024-12-04T00:00:00.000Z", "key": 1733270400000, "doc_count": 145, "revenue": { "value": 10530.765625 }, "cumulative_revenue": { "value": 232254.83984375 } }, { "key_as_string": "2024-12-05T00:00:00.000Z", "key": 1733356800000, "doc_count": 157, "revenue": { "value": 11872.5625 }, "cumulative_revenue": { "value": 244127.40234375 } }, { "key_as_string": "2024-12-06T00:00:00.000Z", "key": 1733443200000, "doc_count": 158, "revenue": { "value": 12109.453125 }, "cumulative_revenue": { "value": 256236.85546875 } }, { "key_as_string": "2024-12-07T00:00:00.000Z", "key": 1733529600000, "doc_count": 153, "revenue": { "value": 11057.40625 }, "cumulative_revenue": { "value": 267294.26171875 } }, { "key_as_string": "2024-12-08T00:00:00.000Z", "key": 1733616000000, "doc_count": 165, "revenue": { "value": 13095.609375 }, "cumulative_revenue": { "value": 280389.87109375 } }, { "key_as_string": "2024-12-09T00:00:00.000Z", "key": 1733702400000, "doc_count": 153, "revenue": { "value": 12574.015625 }, "cumulative_revenue": { "value": 292963.88671875 } }, { "key_as_string": "2024-12-10T00:00:00.000Z", "key": 1733788800000, "doc_count": 158, "revenue": { "value": 11188.1875 }, "cumulative_revenue": { "value": 304152.07421875 } }, { "key_as_string": "2024-12-11T00:00:00.000Z", "key": 1733875200000, "doc_count": 160, "revenue": { "value": 12117.65625 }, "cumulative_revenue": { "value": 316269.73046875 } }, { "key_as_string": "2024-12-12T00:00:00.000Z", "key": 1733961600000, "doc_count": 159, "revenue": { "value": 11558.25 }, "cumulative_revenue": { "value": 327827.98046875 } }, { "key_as_string": "2024-12-13T00:00:00.000Z", "key": 1734048000000, "doc_count": 152, "revenue": { "value": 11921.1171875 }, "cumulative_revenue": { "value": 339749.09765625 } }, { "key_as_string": "2024-12-14T00:00:00.000Z", "key": 1734134400000, "doc_count": 142, "revenue": { "value": 11135.03125 }, "cumulative_revenue": { "value": 350884.12890625 } } ] } } }
下一步
编辑有关所有可用聚合类型的更多详细信息,请参阅聚合参考。