1. 为什么你需要掌握Kibana的去重与分组统计?
如果你正在处理海量的用户行为数据、应用日志或者业务指标,我猜你肯定遇到过这样的头疼问题:“昨天到底有多少个独立用户访问了我们的服务?” 或者 “新上线的App版本1.2.3和1.2.4,哪个版本的活跃度更高?” 这些问题,本质上都是在问两件事:有多少个不同的个体(去重统计),以及 这些个体如何按照某个特征进行分类(分组统计)。
在过去,你可能需要写复杂的SQL查询,比如 COUNT(DISTINCT user_id) 和 GROUP BY app_version,然后在数据库里跑上半天。但现在,如果你的数据已经接入了Elasticsearch,那么恭喜你,你手边就有一个更强大、更直观的工具——Kibana。它不仅能让你用点击和拖拽的方式完成这些复杂的统计,还能把结果变成一目了然的图表,直接用在你的日报、周报或者实时监控大屏上。
我自己在负责一个移动应用的数据分析平台时,就深度依赖这个功能。产品经理每天都会追着问不同渠道、不同版本的用户留存和活跃情况。靠写代码跑批处理脚本?效率太低,而且无法实时响应。正是Kibana的可视化聚合功能,让我能快速搭建出他们需要的仪表板,把数据主动权交还给了业务方。
简单来说,这篇实战指南就是要帮你把Kibana的这个“隐藏技能”给挖出来。我们会从一个非常具体的场景出发:统计过去24小时内,访问某个特定API接口(比如/config)且返回了401状态码的独立手机号数量,并且进一步分析这些请求都来自哪些App版本。通过这个案例,你会彻底搞懂如何去重、如何分组,以及如何把结果清晰地呈现出来。你会发现,原来这些看似高级的数据分析,操作起来可以这么“傻瓜”。
2. 实战前夜:数据准备与核心概念扫盲
在开始动手点击Kibana之前,我们得先确保“弹药”是充足的。这里所谓的弹药,就是已经存储在Elasticsearch里、并且结构清晰的数据。
2.1 你的数据长什么样?
理想情况下,你的每一条日志或数据记录都应该包含我们分析所需的字段。针对我们的手机号去重和版本分组场景,你的数据文档(Document)在Elasticsearch里看起来应该是这样的:
{
"@timestamp": "2023-10-27T14:30:00.000Z",
"request_path": "/api/config",
"http_status": 401,
"phone_number": "13800138000",
"app_version": "1.2.3",
"user_agent": "...",
"client_ip": "192.168.1.1"
// ... 其他字段
}
关键字段解释:
phone_number: 这是我们要进行“去重统计”的字段。同一个用户可能在短时间内发起多次请求,但我们要统计的是人,而不是请求次数,所以需要对这个字段去重。app_version: 这是我们要进行“分组统计”的字段。我们希望看到不同版本的用户分布情况。request_path和http_status: 这是我们的筛选条件,用于过滤出我们关心的那部分数据(例如,路径为/config且状态为401的请求)。
踩坑提醒:确保 phone_number 字段的映射类型是 keyw


2万+

被折叠的 条评论
为什么被折叠?



