利用StreamSet抓取MySql数据在ElasticSearch中建立索引

966 阅读2分钟

ElasticSearch,简称ES,是非常好用的一款分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种数据组合搜索应用。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

1、ES入门知识点

ES是集合了搜索引擎Lucense的一款集成工具,其知识点非常多,这里仅仅介绍概念性的大纲。

一图胜万言: 在这里插入图片描述

2、完成数据采集及建立索引

我们的数据源来自MySql,由MySql 日志记录中读取数据,已经讲了好多回了,这里再回顾一下。

2.1 设定MySql支持Binlog

修改/etc/my.conf配置,增加如下:

server-id=123
log-bin=mysql-bin
binlog_format=ROW

重启MySql服务。

2.2 增加StreamSet对Mysql的支持

特别讨厌Streamset这点,为啥就不集成下呢,哈哈。

安装Mysql的Jdbc驱动以及BinaryLog驱动: 驱动下载 : cdn.mysql.com//Downloads/… 定位到安装目录: /opt/streamsets-datacollector/streamsets-libs, 找到两个目录:streamsets-datacollector-jdbc-lib 和 streamsets-datacollector-mysql-binlog-lib,分别拷贝mysql的jdbc驱动到这两个目录。 重启服务StreamSet。 注意: 设置下权限 chmod -R 777 mysql-connector-java-8.0.22.jar

3、绘制流程图

在这里插入图片描述 小技巧之一:之前有篇文章介绍过13大实践总结,这里就用到了,我们在操作数据的insert和update时,为了避免ES 目标出现错误,可以使用 upsert方式(有了更新,没有插入)。

小坑之一 :在不停的启动和停止管道任务时,会发生错误。

Pipeline Status: RUNNING_ERROR: MYSQL_006 - MySql server error: 
A slave with the same server_uuid/server_id as this slave has connected to the master;
 the first event 'mysql-bin.000001' at 278098179,
  the last event read from './mysql-bin.000001' at 278117580,
  the last byte read from './mysql-bin.000001' at 278117580.

我们只需更换 mysql binary log 的配置 server id即可。应该是频繁启停时可能未能关闭连接的原因导致。

3.1 细节配置参数

以下细节参见 本人CSDN。

4、运行观测

嗯嗯,大型打脸现场并没有出现,一切顺利! 在这里插入图片描述 索引管理里已经出现了我们需要的索引。 在这里插入图片描述

5 数据面板

利用Kibana 建立一个查询索引,然后,在数据搜索里观察数据,如下:

在这里插入图片描述 后续可能会根据需求进行针对性优化,不过大部分工作已经完成了。

不写代码的感觉不香吗?

在这里插入图片描述

6、小结

黄帝内经有云: 春三月,此谓发陈,天地俱生,万物以荣,夜卧早起,广步于庭,被发缓形,以使志生,生而勿杀,予而勿夺,赏而勿罚,此春气之应,养生之道也。逆之则伤肝,夏为寒变,奉长者少。

既然老祖先的经书都这么说了,兄弟姐妹,顺应时节,是不是赶紧点个赞,一键三连啥的?养肝护肝,点赞即行!