es导入json数据_Mysql 同步数据到 Elasticserach(使用logstash-input-jdbc)

这篇博客介绍了如何通过logstash-input-jdbc将Mysql中的数据同步到Elasticsearch。文章详细阐述了从安装Elasticsearch-Kibana的Docker环境,到设置logstash,包括安装jdbc输入插件、编写配置文件和SQL脚本,以及启动同步过程。通过这种方法,实现了Mysql与Elasticsearch之间的数据一致性。
摘要由CSDN通过智能技术生成

业务中遇到一起商务结算的大量数据(3亿)业务,需要查询响应能快,准备动用ES,这里先完成一个初级作业。

Mysql容易搭建,这里不作复述。

需要个ES-kibana的环境,从系统开始搭建过程太冗长,这里继续享受docker。 windows环境的docker怎么配置,windows环境下 docker部署:

Windows使用WSL2安装Docker​www.jianshu.com
67fe74166183c089a03bafb03eb2b945.png

推荐一个镜像,包含了kibana:elasticsearch-kibana

拉取改镜像:docker pull nshou/elasticsearch-kibana

启动该镜像:docker run -d -p 9200:9200 -p 5601:5601 nshou/elasticsearch-kibana

dc1ab620e8e415ea80c915cc91848b65.png

其中 9200是ES的端口,5601是kibana的端口。

容器内运行成功:

3ab74ce7f7abf30f301681f62fc3ddfb.png

http://127.0.0.1:9200/ 有如下内容说明ES启动正常:

1452c53f81fccaaf1250b30f8f15e3ba.png

http://localhost:5601/app/kibana#/home 有如下内容说明kibana启动正常:

972dd877acb2f42da4908d6f53f57d9a.png

同步使用logstash-input-jdbc,其中遇到一堆坑,主要参照如下:

https://blog.csdn.net/qq_16436555/article/details/91360718

https://www.elastic.co/guide/en/logstash/current/index.html

https://www.elastic.co/cn/blog/logstash-jdbc-input-plugin

https://www.cnblogs.com/wueryuan/p/13226469.html

为调试方便,把logstash装在win环境里:

1、先下载https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.zip

2、在bin路径下面执行命令logstash-plugin.bat install logstash-input-jdbc 安装。比如C:eslogstash-7.8.0bin 中间如果遇到java找不到,就在setup.bat首行加路径,比如SET JAVA_HOME=C:Program FilesJavajdk1.8.0_251

7cdc79bb2fa4c308a3d6fc8e4e7a88c1.png

3、bin路径下面建文件夹sync-conf,这个里面又同步sql文件和配置文件,只要路径对,放哪里都可以,这里已bin下作示例:

421e406a57ec1fd4d5028a4799c9bff6.png

4、内包含如下文件:

e243fc928e485124c03d094f1d7c1a0c.png

5、关键的配置文件sync.conf在启动命令行中需要用到:

cb195f357b08d7243bdbee7f54f15519.png

如果数据库中的字段类型是json或string类型,但其中是json结构体,可以通过如下filter同步至es,直接变成结构体:

filter {
      json {
        source => "extcol"
        target => "extcol_obj"
        remove_field => ["extcol"]
      }
    }

其中extcol是string字段名。

logstash 支持秒级 :下面是每5秒同步一次

schedule => "*/5 * * * * *"

这里使用一个简单的Mysql数据做同步源头,上图中选中部分。

6、sync.sql里放置数据查询语句,这里可以写的非常复杂,可以联查,作为示例简单处理:

9f4bc8b7c4fa1c2203ffb25153fd6827.png

7、启动同步,在bin目录下,命令行为 .logstash.bat -f sync-confsync.conf

周期性刷新数据说明启动运行正常:

6b02783225da9754d26c74a0f0a6a9a6.png

实际效果很明显:

首先查询数据库里的数据:

860f848aa257687d745c28feefdbfd92.png

查询ES中的数据,内容一致:

658a20b29975853a08bf62e6cdff4826.png

更新数据库内的数据,查询ES中的数据,数据保持同步。

至此Mysql向ES的最基本的数据同步已实现。

转载请注明出处。

微服务拆分方法论请移步:

丁云:奇技淫巧之CQRS:系统微服务拆分时的数据解耦​zhuanlan.zhihu.com
cb47d3014810b6fd99383901f9d8a3fa.png

JDBC SQL 如何操作 ES,请移步:

丁云:X-PACK JDBC连接ElasticSearch Docker图文版​zhuanlan.zhihu.com
d1b5f407fe7f964429c8670f3b84d700.png

Mycat对Mysql分片分库请移步:

丁云:Mycat 一致性hash分库(Mysql)​zhuanlan.zhihu.com
60023207e42f70f0637dd572ce1013cf.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值