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 地址分布地图可视化相关推荐

  1. php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码

    * 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...

  2. 基于python实现安徽省天气预警信息地图可视化报警并推送信息至微信联系人

    基于python实现安徽省天气预警信息地图可视化报警 import json import requests import simplejson from pyecharts import Map f ...

  3. 电信网通的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 ...

  4. 阿里云服务器地域及可用区选择、节点测速IP地址分布表

    阿里云服务器地域节点选择影响用户网络延迟和访问速度,阿里云服务器ECS在全球有28个地域和85个可用区,此外还拥有5个金融云.政务云专属地域.阿里云服务器地域如何选择?云服务器可用区是什么?云服务器吧 ...

  5. python查询ip归属地_基于Python的免费IP地址归属地查询

    一.开通接口 IP地址归属地查询服务使用聚合数据提供的免费接口,每天可以100次免费调用.可以通过 https://www.juhe.cn/docs/api/id/1 注册及开通. 二.请求接口 #! ...

  6. android的百度地图sdk获取ip,基于百度地图API的ip地址查询

    说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...

  7. 基于纯真本地数据库的 IP 地址查询 PHP 源码

    <?php /*** 纯真 IP 数据库查询 * * 参考资料:* - 纯真 IP 数据库 http://www.cz88.net/ip/* - PHP 读取纯真IP地址数据库 http://j ...

  8. python3--数据可视化-破解IP查询接口 将6万个IP地址可视化展示(附源码)

    文章目录 一.准备工作 二.思路 1.整体思路 2.爬虫思路 3.爬虫实现 三.效果展示 1.数据库 2.IP地址分类分析-饼图 3.IP地址分布可视化-地图 4.IP地址分布分析-饼图 5.IP地址 ...

  9. DHCP原理及服务器搭建详解(固定IP地址,DHCP中继服务)

    DHCP原理及服务器搭建详解 一.引子: DHCP在网络中的作用非常重要,简单来说就像给每台服务器配身份证的机构,你有合格的身份才能做合格的事情,要不然连火车都坐不了.服务器只有被DHCP服务配置了I ...

最新文章

  1. 金星可能存在生命?科学家发现大气中有磷化氢,剧毒气体或是生物代谢产物...
  2. VS2015一新建项目就出现未将对象引用设置到对象的实例怎么办?
  3. 2017年10月07日普及组 数列
  4. arduino python firmate_processing firmata协议及数组训练
  5. 第七十一期:管理 | 技术Leader:选OKR还是KPI?
  6. rpc 服务器不可用_RPC和微服务
  7. 信息学奥赛一本通(1400:统计单词数)
  8. WinCE --- 调试RS485串口
  9. 【Dubbo源码阅读系列】服务暴露之本地暴露
  10. Numpy系列(二)对数组按索引查询
  11. Linux中DHCP主配置文件解析
  12. Spring Boot 的 JSON RPC(客户端示例) - briandilley/jsonrpc4j Wiki
  13. java applet介绍,Java Applet 介绍
  14. 单端正激(Forward)变换器的工作原理CCM模式下电路设计参数计算
  15. i春秋 - Exploit-Exercises: Nebula - level00
  16. Trace32 simulator调试以及简单实用命令介绍
  17. 基础算法(一)零基础学算法---总结大篇
  18. 7-20 打印九九口诀表(C语言版)
  19. python学习——电子邮件
  20. Java、解一元二次方程

热门文章

  1. 罗永浩“真还传”再出番外篇,被执行1800万,交个朋友回应来了…
  2. 车顶维权女子被行拘五日!“特斯拉不可能妥协”,高管硬气回应却被狂批......
  3. 社区团购“九不得”:低价倾销、大数据“杀熟”被禁止
  4. 消息称Uber正洽谈出售旗下自动驾驶部门ATG给Aurora
  5. 华为Mate 40 Pro首碎照来了,网友酸了:不要给我
  6. iPhone 12发布当天,罗永浩开“旧机发布会”:香得不行!
  7. 女子多年未住别墅成剧组拍摄地,网友:看个剧才想起自己还有栋别墅
  8. 搜狗520甜蜜告白攻势:爱的心动 让她看见
  9. 瑞幸之后,又一支中概股自曝:虚增收入,股价盘后大跌
  10. 华为Mate30系列前面板曝光:双曲面刘海屏再获证实