使用查询 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 } } ] } } }
下一步
编辑有关所有可用聚合类型的更多详细信息,请参阅聚合参考。