在看本博客之前需要先按照顺序看以下几篇博客将工具安装好。

1.elasticsearch5.4和5.X安装和elasticsearch head插件安装

2.elasticsearch安全框架之X-pack

3.elasticsearch与数据库同步工具Logstash-input-jdbc


1.      首先启动elasticsearch服务。


链接es数据库的工具_oracle


然后进入到head插件的目录下,在此目录下使用命令行打开,输入grunt server


链接es数据库的工具_数据库_02


2.打开浏览器,输入http://localhost:9100/?auth_user=elastic&auth_password=changeme


链接es数据库的工具_bc_03


连接上elasticsearch服务。

 

3.进入到logstash的bin目录下建立一个文件夹叫logstash_jdbc_test,当然这个文件夹也可以不用建立在logstash的bin文件的夹中,文件名也可以不用这个,在这里主要是为了方便建立一个文件夹,一因为这里需要在这个文件夹中建立两个文件,一个是XXXX.sql(用于同步数据库的sql语句),一个是XXXX.conf(同步的输入输出,拦截器的配置文件),在这里我命名为jdbc.sql和jdbc.conf

链接es数据库的工具_数据库_04

4.配置jdbc.conf


链接es数据库的工具_elasticsearch_05


Input里面是输入的配置,即需要同步的数据来源,在这里同步的是oralce的数据库,如果是oracle数据,则jdbc_connection_string => "jdbc:oracle:thin:HNTEST/ZLB123456@//112.67.241.58:1512/orcl"必须这么写,jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"驱动也必须这么写,不然是连接不上的,Mysql是和平常一样的写法,oracle在这里有点区别。Statement_filepath是同步时查询oracle的sql语句文件,用于查询出需要同步的数据。


链接es数据库的工具_elasticsearch_06


由于logstash-input-jdbc内置的一个时间变量:sql_last_value是timestamp类型,经过多次测试发现在oracle中并不适用,只是适用于mysql数据库,所在在这里我的处理方式是最后的更新时间大于当前时间减去一分钟,并且在jdbc.conf的文件中input配置的是schedule=”* * * * *”意思是每隔一分钟执行一次这个sql文件中的sql语句,这样就可以做到实时的增量同步。

Jdbc.conf的filter 是用于过滤数据,或者处理数据格式的,这里是将数据库中查询出来的数据转成需要插入elasticsearch中所要的json格式。

Output是elasticsearch的配置,在elasticsearch中有索引库的概念,索引库相当于一个数据库,索引库中有一个或多个类型,相当于数据库中的表。这里的类型配置在input中的type=”tab”,这里的output的意思是数据同步到elasticsearch的indexdb索引库的tab类型中。

 

6.启动同步

进入到logstash的bin目录中打开命令行:


链接es数据库的工具_elasticsearch_07


也可以在 logstash -f D:\logstash-5.4.3\bin\logstash_jdbc_test\jdbc.conf后面加个-t来检测配置文件是否正确,正确后输入logstash -fD:\logstash-5.4.3\bin\logstash_jdbc_test\jdbc.conf就可以开始同步数据了。


请继续看本博客的elasticsearch其他的文章,这几篇都是一起的,主要是实现elasticsearch与Oracle数据库同步的