【Elasticsearch<五>末篇 ✈️✈️】结合 kibana 实现索引中 IP 地址分布地图可视化

本文主要是介绍【Elasticsearch<五>末篇 ✈️✈️】结合 kibana 实现索引中 IP 地址分布地图可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

👋前言

👀一、ES 地理位置基本了解

🌱二、IP 地址地图可视化

        2.1 创建预处理通道

        2.2  创建索引库

        2.3 插入一条数据

        2.4 观察写入后的数据

        2.5 可视化展示

😄三、章末


👋前言

        继前面了解 Elasticsearch 的安装、基本属性的操作、SpringBoot 的整合等实践之后,再学习下 ES 中的地理位置属性,因为是对于 ES 自主学习,工作中暂时还未用到该工具,所以初步学习了解就到这里了,这也是对于 ES 学习的最后一篇文章总结,后面如果有空闲再探讨下更高层次的方面吧,之前的文章链接如下:

【Elasticsearch<四>✈️✈️】SpringBoot 项目整合 Elasticsearch-CSDN博客

👀一、ES 地理位置基本了解

        1.1 位置属性是一种特殊的数据类型,用于表示地理坐标点,比如经度和纬度 

类型划分:

  1. 地理位置类型(Geo-point):地理位置属性的数据类型称为 Geo-point。允许存储单个地理坐标点的经度和纬度信息。通常以数组形式存储,例如 [longitude, latitude]

  2. 地理形状类型(Geo-shape):用于存储更复杂的地理形状,如多边形、线条等。可以用于表示地理区域或路径。

  3. 地理索引和查询:Elasticsearch 提供了丰富的地理索引和查询功能,能够有效地存储和查询地理位置数据。可以执行范围查询、距离查询、地理聚合等操作,以便分析和可视化地理位置数据。

🌱二、IP 地址地图可视化

         通过位置属性可以实现很多功能,比如 IP 地址,通过处理器(Geolp processor) 将 IP 转换为对应的经纬度坐标,再借助 kibana 可视化工具渲染展示

        ES 早期版本需要安装 Geolp processor 插件,7.x 版本之后自带,本地使用的是 7.6 

Geolp processor 可以将 ip 地址(IPv4,IPv6)解析并添加到 geoip 字段下

        2.1 创建预处理通道

        注:执行此操作之前,需要启动 ES 服务器, kibana 工具,浏览器插件

        预处理通道就是在后面我们向索引中插入 ip 数据时,会自动通过预处理通道将 IP 字段转换为 Geoip 类型 ,创建通道如代码下:

代码解析:

        创建一个新的管道,名称为 ip_to_geo_pipeline ,备注为 add geoip info , 该管道包含了一个 geoip 处理器,该处理器中指定了要解析的 ip 字段

 PUT _ingest/pipeline/ip_to_geo_pipeline
{"description" : "Add geoip info","processors" : [{"geoip" : {"field" : "ip"}}]
}

        2.2  创建索引库

        创建一个新的索引库,这里定义了一个 ip 字段,并且指定该索引自动使用 ip_to_geo_pipeline  解析 ip 为地理位置信息,并将结果存在 geoip.location 字段中

PUT ip_map
{"settings": {"index.default_pipeline": "ip_to_geo_pipeline","number_of_shards": 1,"number_of_replicas": 0},"mappings": {"properties": {"geoip": {"properties": {"location": {"type": "geo_point"}}},"ip":{"type":"keyword"}}}
}

        2.3 插入一条数据

        指定文档 id,插入一条 ip 数据,观察下此时的 _mapping结构,结果如下:

PUT ip_map/_doc/1
{"ip": "58.247.0.2"
}GET ip_map/_mapping

        geoip.city_name : 城市

        geoip.contient_name : 大陆名称

        geoip.country_iso_code : 国家编码

        geoip.location : 经纬度坐标

        geoip.region_iso_code : 地域编码

        geoip.region_name : 地域名称

        2.4 观察写入后的数据

        这里再插入一条数据,之后查看写入后的数据,确实是将 ip 转换为对应的地理经纬度,以及对应的国家编码等信息,如下:

PUT ip_map/_doc/2
{"ip": "120.52.168.36"
}
GET ip_map/_search

         2.5 可视化展示

        准备好索引库以及数据之后,就可以借助 kibana 工具实现 IP 地址可视化了

        2.5.1 kibana 创建 index pattern (地图索引设置)

        创建 Index pattern 是第一步,提供了一个方便的方式操作 Elasticsearch  中的数据

         2.5.2 打开 kibana 地图可视化编辑器

        打开地图编辑栏,添加新的图层,通过文档的方式创建,之后选择刚刚创建的 ip_map 地图索引

     

           2.5.3 编辑图层显示方式

        可以自定义添加 ip 对应在图层上的标识装饰,以及提示信息,如下设置为鼠标点击 ip 地址图标后会显示当前 ip 地址:

😄三、章末

         正文到这里就结束了,有关 Elasticsearch 文章总结就先更到这里,但关于 ES 的自主学习不会停,因为业务决定技术要求嘛,目前工作中还没用到过,只是个人当拓展学习下。当然,后面有机会会进一步学习深层次的知识

这篇关于【Elasticsearch<五>末篇 ✈️✈️】结合 kibana 实现索引中 IP 地址分布地图可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975899

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关