希望通过这个项目帮助 Elasticsearch 学习者快速掌握有实践意义的相关的技能。
本项目将:
- 仅需执行几个命令,即可自动创建基于虚拟机的 Elasticsearch/Kibana 实验环境
- 提出一个严谨、抽象和简化的用户留存问题,这个问题广泛存在于数字化服务的各个领域
- 给出一个有关上述用户留存问题的 Elasticsearch/Kibana 可视化解决思路、步骤和方案
- 提供一个基于上述解决方案的大规模用户模拟数据生成工具,便于学习者对性能的评估和理解
开始使用本项目前,需要具备以下条件:
- 有一台性能较好的台式机/笔记本,主要是内存要尽量大(最少虚拟机需要给 2GB 内存,建议 6GB 以上)
- 通读过 Elasticsearch Reference,并掌握基本的创建索引、查询和聚合命令
- 通读过Kibana Guide,并掌握基本的 Dev Tools、Discover 和 Dashboard 功能的使用
- 掌握基本的 Vagrant 和 Docker/docker-compose 命令的使用
首先需要阅读理解有关用户留存统计问题的定义,这里提出了后续需要解决的问题。
可以认为这是需求,因为它不包含任何实现技术。
实验环境包括在 Vagrant/Virtualbox 虚拟机下安装的:
- Docker
- docker-compose
- 在 docker/docker-compose 下容器
- Elasticsearch 7.9
- Kibana 7.9
- Node.js 14.x
- 模拟数据生成工具
在安装、配置和运行实验环境 给出了完整的创建实验环境的步骤。
为了执行后续的 Elasticsearch 查询和聚合,需要为索引显式声明索引映射。
详情见创建索引映射。
生成模拟数据的用途可用于:
- 验证统计分析的正确性
- 评估性能
具体步骤见生成模拟数据
针对用户留存数和用户留存率,给出:
- 查询和聚合的命令
- 使用上述命令,结合 Kibana Vega,给出可视化代码
- 性能分析
学习者可生成模拟数据并验证上述命令和可视化的正确性。
具体见用户留存数据的可视化
针对游戏留存率,给出查询和聚合的命令。
学习者可:
- 根据查询命令,结合 Kibana,自己定制可视化代码
- 通过模拟数据工具生成所需数据规模数据,并给出性能分析结论
- 验证查询命令和可视化的正确性
具体见游戏留存数据的查询和聚合
有关通关率,给出编写查询和聚合语句的基本思路,学习者可:
- 根据基本思路,编写适合的查询和聚合命令
- 基于查询和聚合命令,结合 Kibana,定制可视化代码
- 通过模拟数据工具生成所需数据规模数据,并给出性能分析结论
- 验证查询命令和可视化的正确性
具体见游戏通关率的基本思路
使用 Elasticsearch 解决一般数据统计分析的过程可总结为:
- 将问题用严谨语言表述和抽象化,转化为数学问题的需求
- 静态数据建模,主要是形成 Elasticsearch Index Mapping
- 生成少量模拟数据,可以参照本项目模拟数据工具自行编写实现,或者通过 Kibana Dev Tools 手工加入
- 编写查询和聚合命令,在 Kibana Dev Tools 执行,并验证执行结果的正确性
- 使用模拟数据工具生成生产环境所需上限规模的数据,执行查询聚合,评估性能
- 定制 Kibana Dashboard,使用上述确定的查询和聚合命令
- 根据要展示的指标,确定使用哪种 Vitualization 组件形式
- 配置 Vitualization 组件,基于查询和聚合命令配置
- 如果基本的 Vitualization 组件不能满足需求,可使用 Vitualization Vega,后者有更大的灵活性,覆盖更大的需求
使用本项目,可参照上述过程,实现
- 在本地使用 Vigrant/Virtualbox 虚拟机的研发工作
- 本项目可部署在公有云 ECS 上做生产环境的测试和评估
- 执行相关脚本安装所需工具,和本地环境一致
- 因此,后续过程和命令使用和本地使用也类似
- 可通过 VS Code Remote,直接在本地执行 ECS,类似本地的情况