【Kibana】Kibana 大数据分析实战(一)

kibana_sample_data_ecommerce 是 Elastic 官方提供的电商业务模拟数据集,主要用于 Kibana 的功能演示和数据可视化练习。这个数据集模拟了一个在线零售商的交易数据。

这个数据集设计精良,包含了电商业务中最常见的分析维度,非常适合用于学习 Kibana 的各种功能和分析方法。

  • Discover:浏览原始订单数据
  • Dashboard:创建销售仪表盘
  • Visualize
    • 销售额趋势图(折线图)
    • 商品类别销售占比(饼图)
    • 地理分布图(地图)
  • Lens:快速分析客户购买行为
  • Maps:可视化销售地理分布

在这里插入图片描述

1.索引结构

该数据集包含一个主索引:

  • kibana_sample_data_ecommerce

在这里插入图片描述

2.初步探索(Discover 面板)

可以先在 Discover 面板中看一下该数据集有哪些业务字段,进行初步摸排。

在这里插入图片描述

2.1 Table 格式

在这里插入图片描述
在这里插入图片描述

2.2 JSON 格式

{
  "_index": "kibana_sample_data_ecommerce",
  "_type": "_doc",
  "_id": "R5AfQJcBt8iFjG3dMKLq",
  "_score": 1,
  "_source": {
    "category": [
      "Men's Accessories",
      "Men's Clothing"
    ],
    "currency": "EUR",
    "customer_first_name": "Marwan",
    "customer_full_name": "Marwan Sharp",
    "customer_gender": "MALE",
    "customer_id": 51,
    "customer_last_name": "Sharp",
    "customer_phone": "",
    "day_of_week": "Tuesday",
    "day_of_week_i": 1,
    "email": "marwan@sharp-family.zzz",
    "manufacturer": [
      "Elitelligence",
      "Oceanavigations"
    ],
    "order_date": "2025-06-03T16:09:07+00:00",
    "order_id": 567543,
    "products": [
      {
        "base_price": 24.99,
        "discount_percentage": 0,
        "quantity": 1,
        "manufacturer": "Elitelligence",
        "tax_amount": 0,
        "product_id": 14075,
        "category": "Men's Accessories",
        "sku": "ZO0608106081",
        "taxless_price": 24.99,
        "unit_discount_amount": 0,
        "min_price": 12.74,
        "_id": "sold_product_567543_14075",
        "discount_amount": 0,
        "created_on": "2016-12-13T16:09:07+00:00",
        "product_name": "Rucksack - black",
        "price": 24.99,
        "taxful_price": 24.99,
        "base_unit_price": 24.99
      },
      {
        "base_price": 20.99,
        "discount_percentage": 0,
        "quantity": 1,
        "manufacturer": "Oceanavigations",
        "tax_amount": 0,
        "product_id": 20484,
        "category": "Men's Clothing",
        "sku": "ZO0296502965",
        "taxless_price": 20.99,
        "unit_discount_amount": 0,
        "min_price": 9.87,
        "_id": "sold_product_567543_20484",
        "discount_amount": 0,
        "created_on": "2016-12-13T16:09:07+00:00",
        "product_name": "Jumper - dark grey",
        "price": 20.99,
        "taxful_price": 20.99,
        "base_unit_price": 20.99
      }
    ],
    "sku": [
      "ZO0608106081",
      "ZO0296502965"
    ],
    "taxful_total_price": 45.98,
    "taxless_total_price": 45.98,
    "total_quantity": 2,
    "total_unique_products": 2,
    "type": "order",
    "user": "marwan",
    "geoip": {
      "country_iso_code": "MA",
      "location": {
        "lon": -8,
        "lat": 31.6
      },
      "region_name": "Marrakech-Tensift-Al Haouz",
      "continent_name": "Africa",
      "city_name": "Marrakesh"
    },
    "event": {
      "dataset": "sample_ecommerce"
    }
  },
  "fields": {
    "order_date": [
      "2025-06-03T16:09:07.000Z"
    ],
    "products.created_on": [
      "2016-12-13T16:09:07.000Z",
      "2016-12-13T16:09:07.000Z"
    ]
  }
}

3.字段业务含义分析

3.1 订单基础信息

字段名类型业务含义示例值分析
order_id数值订单唯一编号567543(6 位数字 ID)
customer_id数值客户唯一标识51(数值型 ID)
customer_first_namekeyword客户名字“Marwan”
customer_last_namekeyword客户姓氏“Sharp”
customer_full_nametext客户全名“Marwan Sharp”
customer_genderkeyword客户性别“MALE”(新版改为全大写)
customer_phonekeyword联系电话空值(表示未提供)
emailkeyword电子邮箱“marwan@sharp-family.zzz”
userkeyword用户名“marwan”(可能为登录账号)

3.2 时间信息

字段名类型业务含义示例值分析
order_datedate订单时间“2025-06-03T16:09:07+00:00”(UTC 时间)
day_of_weekkeyword星期几“Tuesday”
day_of_week_iinteger星期数字1(0=周日,1=周一,依此类推)
products.created_ondate商品创建时间“2016-12-13T16:09:07+00:00”(早于订单日期)

3.3 商品信息(嵌套对象)

字段名类型业务含义示例值分析
products.product_id数值商品ID14075, 20484
products.product_nametext商品名称“Rucksack - black”(黑色背包)
products.categorykeyword商品类别“Men’s Accessories”
products.skukeyword库存单位“ZO0608106081”(商品编码)
products.pricefloat实际售价24.99(欧元)
products.base_pricefloat基础价格24.99(与售价相同,无折扣)
products.quantityinteger购买数量1(每件商品数量)
products.tax_amountfloat税额0(免税)
products.taxful_pricefloat含税价24.99(与不含税价相同)
products.taxless_pricefloat不含税价24.99
products.discount_* 相关字段float折扣信息全部为 0(无折扣)
products.min_pricefloat最低价格12.74(可能为历史最低价)
products.manufacturerkeyword制造商“Elitelligence”

3.4 订单汇总信息

字段名类型业务含义示例值分析
categoryarray订单包含的所有商品类别[“Men’s Accessories”, “Men’s Clothing”]
manufacturerarray所有商品的制造商[“Elitelligence”, “Oceanavigations”]
skuarray所有商品SKU[“ZO0608106081”, “ZO0296502965”]
taxful_total_pricefloat订单总金额(含税)45.98 EUR(24.99+20.99)
taxless_total_pricefloat订单总金额(不含税)45.98 EUR
total_quantityinteger商品总件数2(两件商品)
total_unique_productsinteger唯一商品种类数2(两种不同商品)
currencykeyword货币类型“EUR”(欧元)
typekeyword订单类型“order”(标准订单)

3.5 地理位置信息

字段名类型业务含义示例值分析
geoip.country_iso_codekeyword国家代码“MA”(摩洛哥)
geoip.locationgeo_point经纬度lon: -8, lat: 31.6
geoip.region_namekeyword地区名称“Marrakech-Tensift-Al Haouz”
geoip.continent_namekeyword大洲名称“Africa”
geoip.city_namekeyword城市名称“Marrakesh”(马拉喀什)

3.6 事件元数据

字段名类型业务含义示例值分析
event.datasetkeyword数据集来源“sample_ecommerce”(标识为示例数据)

4.典型业务分析场景

4.1 销售分析

  • 按时间(天、周、月)分析销售额
  • 热销商品和类别分析
  • 平均订单价值(AOV)分析
  • 哪些商品经常被一起购买

4.2 客户分析

  • 客户地域分布
  • 客户性别购买偏好
  • 高价值客户识别
  • 客户购买频率、偏好品类、客单价等

4.3 库存分析

  • 商品销售数量排行
  • 商品周转率分析

4.4 地理分析

  • 销售热点区域
  • 区域销售对比
  • 不同地区的销售偏好

5.实战分析

5.1 查询 Marwan Sharp 客户的所有购买记录

要查询特定客户的所有购买记录,可以使用 Elasticsearch 的 term 查询或 match 查询来匹配客户全名字段。以下是几种查询方式:

5.1.1 精确匹配查询(使用 term)

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "term": {
      "customer_full_name.keyword": {
        "value": "Marwan Sharp"
      }
    }
  }
}

在这里插入图片描述

5.1.2 文本匹配查询(使用 match)

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "match": {
      "customer_full_name": "Marwan Sharp"
    }
  }
}

在这里插入图片描述

5.1.3 组合查询 (使用客户 ID 和姓名)

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "bool": {
      "must": [
        { "term": { "customer_id": 51 }},
        { "term": { "customer_full_name.keyword": "Marwan Sharp" }}
      ]
    }
  }
}

在这里插入图片描述

5.1.4 包含排序的查询(按订单日期降序)

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "term": {
      "customer_full_name.keyword": {
        "value": "Marwan Sharp"
      }
    }
  },
  "sort": [
    {
      "order_date": {
        "order": "desc"
      }
    }
  ]
}

在这里插入图片描述

5.1.5 只返回特定字段的查询

GET kibana_sample_data_ecommerce/_search
{
  "query": {
    "term": {
      "customer_full_name.keyword": {
        "value": "Marwan Sharp"
      }
    }
  },
  "_source": ["order_id", "order_date", "taxful_total_price", "products.product_name"]
}

在这里插入图片描述

查询说明

  • term vs match
    • term 用于精确值匹配,对 keyword 类型字段效率更高。
    • match 会对文本进行分析,适合 text 类型字段。
  • .keyword 子字段
    • 当字段是 text 类型时(如 customer_full_name),使用 .keyword 子字段进行精确匹配。
    • 如果直接映射为 keyword 类型,则不需要加 .keyword
  • 性能考虑
    • 使用 customer_id(数值型)查询通常比姓名查询更快。
    • 如果经常按客户查询,可以考虑在 customer_id 字段上添加索引。
  • 分页处理
    • 对于大量结果,可以添加 "from": 0, "size": 10 参数进行分页。

5.2 统计国家为 MA 的不同性别客户数量

要统计国家代码为 MA(摩洛哥)的不同性别客户数量,可以使用 Elasticsearch 的聚合(aggregation)功能。以下是几种查询方式:

5.2.1 基本聚合查询

GET kibana_sample_data_ecommerce/_search
{
  "size": 0,  // 不返回具体文档,只返回聚合结果
  "query": {
    "term": {
      "geoip.country_iso_code": "MA"
    }
  },
  "aggs": {
    "genders": {
      "terms": {
        "field": "customer_gender",
        "size": 10  // 返回所有可能的性别分类
      }
    }
  }
}

在这里插入图片描述

5.2.2 包含去重客户数的精确统计

GET kibana_sample_data_ecommerce/_search
{
  "size": 0,
  "query": {
    "term": {
      "geoip.country_iso_code": "MA"
    }
  },
  "aggs": {
    "unique_customers": {
      "cardinality": {
        "field": "customer_id"
      }
    },
    "genders": {
      "terms": {
        "field": "customer_gender",
        "size": 10
      },
      "aggs": {
        "unique_customers_per_gender": {
          "cardinality": {
            "field": "customer_id"
          }
        }
      }
    }
  }
}

在这里插入图片描述

  • 去重统计:使用 cardinality 聚合可以统计唯一客户数,避免同一客户的多次购买被重复计算。
  • 性能优化:对于大数据集,可以在 cardinality 聚合中添加 "precision_threshold": 1000 参数平衡精度和性能。

5.2.3 包含性别和购买金额的复合统计

GET kibana_sample_data_ecommerce/_search
{
  "size": 0,
  "query": {
    "term": {
      "geoip.country_iso_code": "MA"
    }
  },
  "aggs": {
    "genders": {
      "terms": {
        "field": "customer_gender",
        "size": 10
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "taxful_total_price"
          }
        },
        "avg_order_value": {
          "avg": {
            "field": "taxful_total_price"
          }
        }
      }
    }
  }
}

在这里插入图片描述

以上查询可以帮助您了解 MA 国家客户的性别分布情况,以及不同性别客户的购买行为差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值