如何在Kibana中基于交易经纬度创建地理热力地图可视化?
在Kibana中基于交易经纬度创建热力地图可视化指南
一、先确保Elasticsearch中的地理数据格式合规
Elasticsearch的地理地图依赖geo_point类型字段,当前日志里的Latitude和Longitude是分开的数值/文本字段,需要合并为标准地理点格式,你有两种实现方式:
方式1:直接修改源应用日志格式
在输出日志时,把经纬度合并为一个location字段,格式为纬度,经度(注意顺序是纬度在前、经度在后),示例输出:
Location: 34.0522,-118.2437
后续摄入Elasticsearch时,只需在索引模板中把location字段设为geo_point类型即可。
方式2:用摄入管道/Logstash转换现有字段
如果不想修改源应用,可通过数据处理组件转换:
用Elastic摄入管道处理
- 进入Kibana的Stack Management > Ingest Pipelines,创建新管道
- 添加一个Script处理器,输入以下脚本合并经纬度:
ctx.location = [ctx.Longitude, ctx.Latitude];
- 给目标索引配置索引模板,确保
location字段为geo_point类型:
{ "mappings": { "properties": { "location": { "type": "geo_point" } } } }
用Logstash处理
在Logstash的filter配置中添加以下规则,合并并转换字段类型:
filter { mutate { add_field => { "[location][lat]" => "%{Latitude}" } add_field => { "[location][lon]" => "%{Longitude}" } } mutate { convert => { "[location][lat]" => "float" } convert => { "[location][lon]" => "float" } } }
输出到Elasticsearch时,同样要确保索引的location字段是geo_point类型。
二、创建热力地图可视化
- 进入Kibana的Visualize Library,点击Create visualization,选择Map类型
- 在地图编辑器中,点击Add layer,选择Heat map层
- 在Data source中选择你的交易日志索引
- 在Location field下拉框中选择已配置好的
location(geo_point类型)字段 - 调整热力图参数:
- Weight:选择聚合维度,比如用
Count统计交易数量,或选择交易金额字段展示金额热力分布 - Radius:开启Scale radius with zoom选项,实现缩放时精度自动调整(放大地图时半径缩小,显示更精细的商户分布)
- Color gradient:自定义热力颜色,比如用红黄色系表示交易密度从低到高
- Weight:选择聚合维度,比如用
- 可添加时间过滤器,按时间段筛选交易数据,查看不同时段的热力分布
- 完成配置后,点击Save保存可视化,也可添加到仪表盘展示
三、优化缩放精度的额外设置
- 在热力层的Advanced options中,可设置Minimum zoom和Maximum zoom对应的半径范围,比如缩小地图时用20px半径,放大到街道级别时用5px半径
- 选择Geo grid聚合方式,设置不同缩放级别下的网格精度(低缩放用
coarse网格,高缩放用fine网格),让聚合结果随地图缩放更精准
内容的提问来源于stack exchange,提问作者Ryan.Bartsch
相关产品推荐
相关产品推荐

