在本文中,我们将向您展示如何使用 Elasticsearch 中的 UBI(用户行为洞察)标准捕获和分析用户分析数据。
您可以在本文中了解有关 UBI 的更多信息。
使用 UBI 收集器收集的数据可以在 Kibana 上用于构建仪表板,从而打开了解用户在我们应用程序中的行为的窗口。在本博客中,我们将探讨如何分析 Kibana 中的 UBI 数据,以深入了解我们的应用程序是如何使用的。
演示设置
我们可以按照以下步骤轻松重现本博客中的演示:
1)克隆代码库
git clone https://github.com/Alex1795/ubi-dashboard-elasticsearch_blog.git
cd ubi-dashboard-elasticsearch_blog
2)安装所需的库:
pip install -r requirements.txt
3)运行设置脚本。确保事先设置以下环境变量:
- ES_HOST
- API_KEY
- KIBANA_HOST
python setup.py
这就是你需要做的全部操作。如果一切顺利,你应该会在脚本执行中看到如下输出:

正如我们所见,脚本:
- 创建了两个具有适当映射的索引
- 向这些索引添加了 23 个文档
- 将一些已保存的对象上传到 Kibana
现在,让我们看看这个脚本在后台到底做了什么。
理解已上传的数据
首先,在创建可视化之前,我们先在 Elasticsearch 中放入一些数据。
你可以在 Kibana DevTools 中手动重现该过程,分别复制映射和示例数据,并使用 PUT <index> 和 PUT _bulk API。
ubi_events 索引
用户操作数据,每次点击都会生成文档(本例中),包括:
- application:生成事件的客户端应用程序("search-ui")
- action_name:执行的用户操作类型("click")
- query_id:将该事件链接到相应的搜索查询会话
- client_id:生成的唯一 ID,用于表示用户或会话,不泄露个人数据。它代替使用可识别数据(如电子邮件或用户名)生成。这种方法具有隐私优势,例如安全分析能力和安全数据共享,同时仍能实现会话连续性、行为分析或 A/B 测试等重要功能。
- timestamp:事件发生的 ISO 8601 格式时间戳
- message_type:事件类别,用于处理("CLICK_THROUGH")
- message:事件发生的人类可读描述("Clicked Fahrenheit 451")
- user_query:导致该事件的原始搜索词("fahrenheit")
- event_attributes:包含详细事件上下文的嵌套对象:
- object.device:用户使用的设备类型("mobile")
- object.object_id:点击项的唯一标识
- object.description:点击项的详细信息(书名、日期、作者)
- object.position.ordinal:搜索结果中项的排名位置(第 1 位)
- object.position.page_depth:项所在的结果页(第 1 页)
- object.user.ip:用户 IP 地址
- object.user.city/region/country:地理位置信息
- object.user.location:精确的经纬度坐标
示例文档:
{
"application": "search-ui",
"action_name": "click",
"query_id": "2dd48446-7ca8-4510-89f4-2ebb67ed240b",
"client_id": "8c1915fe-8ee0-4487-b801-3b1d67c25cf6",
"timestamp": "2025-07-30T14:25:52.698Z",
"message_type": "CLICK_THROUGH",
"message": "Clicked Fahrenheit 451",
"user_query": "fahrenheit",
"event_attributes": {
"object": {
"device": "mobile",
"object_id": "ZwoTM5gBPJ218VOaBpj4",
"description": "Fahrenheit 451(1953-10-15) by Ray Bradbury",
"position": {
"ordinal": 1,
"page_depth": 1
},
"user": {
"ip": "192.168.1.100",
"city": "New York",
"region": "New York",
"country": "United States",
"location": {
"lat": 40.7128,
"lon": -74.006
}
}
}
}
}
你可以在此处下载索引映射

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



