【Elasticsearch】基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化
1.概述
转载:基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化
1、需求
有一批特定用途(文末揭晓)的 IP 地址。
想通过地图形式可视化展示 IP 地址对应的经纬度坐标的分布。
2、方案探讨
基础方案如下:
第一步:IP 地址转经纬度坐标。
实现借助第三方工具:https://ipstack.com/
第二步:经纬度坐标借助可视化工具(如:echarts)渲染展示。
这时候不免进一步思考:
有没有更快捷的方案呢?ELK 能实现不?
已知的知识点:
Elasticsearch 支持 Geo-point、Geo-shape 数据类型。
Kibana 支持 Coordinate Map(坐标图)、Region Map(区域地图)可视化地图展示。
两个已知知识点一整合不就是基于 Elasticsearch + Kibana 的可视化展示方案吗?
且慢,有没有更快捷的 IP 地址转经纬度坐标的信息呢?
有的。Ingest 数据预处理管道的 GeoIP processor (处理器)就能达到这个目的。
整体架构图如下图所示:
3、GeoIp processor 介绍
官方解读如下:GeoIp processor 根据来自 Maxmind 数据库的数据添加有关IP地址地理位置的信息。
默认情况下,GeoIp processor 将此信息添加到 geoip 字段下。GeoIp processor 可以解析 IPv4 和 IPv6 地址。
更多 Maxmind 数据库信息参见:
https://dev.maxmind.com/geoip/geoip2/geolite2/
在 Elasticsearch 早期版本中 GeoIp processor 需要安装插件才能使用。7.X 版本后,ES 已自带,不需要安装。
4、导入一条数据实战一把
4.1 步骤 1:创建预处理管道
PUT _ingest/pipeline/geoip_pipeline
{"description" : "Add geoip info","processors" : [{"geoip" : {"field" : "ip"}}]
}
该预处理的目的就是:将输入的 IP 字段转换为:Geoip 类型。具体 Geoip 类型张什么样?后面会揭晓。
4.2 步骤 2:创建索引
DELETE niu_20210215
PUT niu_20210215
{"settings": {"index.default_pipeline": "geoip_pipeline","number_of_shards": 1,"number_of_replicas": 0},"mappings": {"properties": {"geoip": {"properties": {"location": {"type": "geo_point"}}},"ip":{"type":"keyword"}}}
}
考虑到后面要批量导入数千条+数据,我们采用了取巧的方式。
使用了在创建索引的时候指定缺省管道(index.default_pipeline)的方式。
这样的好处是:
灵活:用户只关心 bulk 批量写入数据。
零写入代码修改:甚至写入数据的代码一行都不需要改就可以。
4.3 步骤 3:写入一条数据
PUT niu_20210215/_doc/1
{"ip": "8.8.8.8"
}
这时候,我们查看一下完整的 Mapping 张什么样?
GET niu_20210215/_mapping{"niu_20210215" : {"mappings" : {"properties" : {"geoip" : {"properties" : {"continent_name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"country_iso_code" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"location" : {"type" : "geo_point"}}},"ip" : {"type" : "keyword"}}}}
}
写入后的数据,查看返回如下:
GET niu_20210215/_search"_source" : {"geoip" : {"continent_name" : "North America","country_iso_code" : "US","location" : {"lon" : -97.822,"lat" : 37.751}},"ip" : "8.8.8.8"
}
有点长,铭毅解读一下:
第一:geoip 是 object 类型,它有几个子字段,含义如下:
geoip.city_name:城市geoip.continent_name:大陆名称geoip.country_iso_code:国家编码geoip.location:经纬度坐标,必须是:geo_point 类型geoip.region_iso_code:地域编码geoip.region_name:地域名称
第二:为节省存储,Mapping 可以优化。
比如:所有的默认字符串类型改成:keyword 类型。
第三:为了后面的作图必须将 location 设置为 geo_point 类型。
以上三个步骤:就完成了单条数据的写入。
4.4 步骤 4:kibana 可视化展示
后面的展示 7.8 我找不到地方
【Elasticsearch】基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化相关推荐
- php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码
* 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...
- 基于python实现安徽省天气预警信息地图可视化报警并推送信息至微信联系人
基于python实现安徽省天气预警信息地图可视化报警 import json import requests import simplejson from pyecharts import Map f ...
- 电信网通的IP地址分布
现在2线路的选择越来越应用广泛,下面陈列电信网通各IP的分布: 电信ip地址 58.32.0.0/13 58.40.0.0/15 58.42.0.0/16 58.44.0.0/14 58.48.0.0 ...
- 阿里云服务器地域及可用区选择、节点测速IP地址分布表
阿里云服务器地域节点选择影响用户网络延迟和访问速度,阿里云服务器ECS在全球有28个地域和85个可用区,此外还拥有5个金融云.政务云专属地域.阿里云服务器地域如何选择?云服务器可用区是什么?云服务器吧 ...
- python查询ip归属地_基于Python的免费IP地址归属地查询
一.开通接口 IP地址归属地查询服务使用聚合数据提供的免费接口,每天可以100次免费调用.可以通过 https://www.juhe.cn/docs/api/id/1 注册及开通. 二.请求接口 #! ...
- android的百度地图sdk获取ip,基于百度地图API的ip地址查询
说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...
- 基于纯真本地数据库的 IP 地址查询 PHP 源码
<?php /*** 纯真 IP 数据库查询 * * 参考资料:* - 纯真 IP 数据库 http://www.cz88.net/ip/* - PHP 读取纯真IP地址数据库 http://j ...
- python3--数据可视化-破解IP查询接口 将6万个IP地址可视化展示(附源码)
文章目录 一.准备工作 二.思路 1.整体思路 2.爬虫思路 3.爬虫实现 三.效果展示 1.数据库 2.IP地址分类分析-饼图 3.IP地址分布可视化-地图 4.IP地址分布分析-饼图 5.IP地址 ...
- DHCP原理及服务器搭建详解(固定IP地址,DHCP中继服务)
DHCP原理及服务器搭建详解 一.引子: DHCP在网络中的作用非常重要,简单来说就像给每台服务器配身份证的机构,你有合格的身份才能做合格的事情,要不然连火车都坐不了.服务器只有被DHCP服务配置了I ...
最新文章
- 金星可能存在生命?科学家发现大气中有磷化氢,剧毒气体或是生物代谢产物...
- VS2015一新建项目就出现未将对象引用设置到对象的实例怎么办?
- 2017年10月07日普及组 数列
- arduino python firmate_processing firmata协议及数组训练
- 第七十一期:管理 | 技术Leader:选OKR还是KPI?
- rpc 服务器不可用_RPC和微服务
- 信息学奥赛一本通(1400:统计单词数)
- WinCE --- 调试RS485串口
- 【Dubbo源码阅读系列】服务暴露之本地暴露
- Numpy系列(二)对数组按索引查询
- Linux中DHCP主配置文件解析
- Spring Boot 的 JSON RPC(客户端示例) - briandilley/jsonrpc4j Wiki
- java applet介绍,Java Applet 介绍
- 单端正激(Forward)变换器的工作原理CCM模式下电路设计参数计算
- i春秋 - Exploit-Exercises: Nebula - level00
- Trace32 simulator调试以及简单实用命令介绍
- 基础算法(一)零基础学算法---总结大篇
- 7-20 打印九九口诀表(C语言版)
- python学习——电子邮件
- Java、解一元二次方程
热门文章
- 罗永浩“真还传”再出番外篇,被执行1800万,交个朋友回应来了…
- 车顶维权女子被行拘五日!“特斯拉不可能妥协”,高管硬气回应却被狂批......
- 社区团购“九不得”:低价倾销、大数据“杀熟”被禁止
- 消息称Uber正洽谈出售旗下自动驾驶部门ATG给Aurora
- 华为Mate 40 Pro首碎照来了,网友酸了:不要给我
- iPhone 12发布当天,罗永浩开“旧机发布会”:香得不行!
- 女子多年未住别墅成剧组拍摄地,网友:看个剧才想起自己还有栋别墅
- 搜狗520甜蜜告白攻势:爱的心动 让她看见
- 瑞幸之后,又一支中概股自曝:虚增收入,股价盘后大跌
- 华为Mate30系列前面板曝光:双曲面刘海屏再获证实