《果然新鲜》电商项目(45)- 利用Logstash自动同步数据库内容到ES(多文件方式)
Posted IT刘老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《果然新鲜》电商项目(45)- 利用Logstash自动同步数据库内容到ES(多文件方式)相关的知识,希望对你有一定的参考价值。
引言
在前篇《利用Logstash自动同步数据库内容到ES》,主要讲解了logstash如何同步mysql数据库内容到ES,以商品表为例子举例的,配置文件只有一个。如果要同步多张表,对应的配置文件也是多个的,该如何实现呢?其实很简单的,配置下pipelines就可以了,本文来讲解下。
1.新增配置文件
首先贴出上一篇的配置文件(mysql.conf):
input
jdbc
jdbc_driver_library => "/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://192.168.18.166:3306/guoranxinxian-goods"
jdbc_user => "root"
jdbc_password => "123456"
schedule => "* * * * *"
statement => "SELECT * FROM product WHERE UPDATED_TIME > :sql_last_value"
use_column_value => true
tracking_column_type => "timestamp"
tracking_column => "updated_time"
last_run_metadata_path => "syncpoint_product_table"
output
elasticsearch
hosts => ["192.168.162.134:9200"]
index => "product"
document_id => "%id"
document_type => "product"
stdout
codec => json_lines
上一篇的配置表主要是同步数据库里的商品表(product
)到ES里的,现在需要同步数据库的商品目录表(category
)到ES,下面直接贴配置文件的代码(mysql1.conf
):
input
jdbc
jdbc_driver_library => "/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://192.168.18.166:3306/guoranxinxian-goods"
jdbc_user => "root"
jdbc_password => "123456"
schedule => "* * * * *"
statement => "SELECT * FROM category WHERE UPDATED_TIME > :sql_last_value"
use_column_value => true
tracking_column_type => "timestamp"
tracking_column => "updated_time"
last_run_metadata_path => "syncpoint_category_table"
output
elasticsearch
hosts => ["192.168.162.134:9200"]
index => "category"
document_id => "%id"
document_type => "category"
stdout
codec => json_lines
注意:我修改了上面两个配置文件的最新同步时间点保存的目标源,每个表必须配置一个同步时间点文件:上面两个例子last_run_metadata_path
(同步时间点文件)的名字分别是syncpoint_product_table
、syncpoint_category_table
:
2.pipelines配置
1.上传文件到logstash
的config文件夹内(/usr/share/logstash/config
),如下:
2.配置当前文件夹里的pipelines.yml文件,配置内容如下:
- pipeline.id: product_table
path.config: "/usr/share/logstash/config/mysql.conf"
- pipeline.id: category_table
path.config: "/usr/share/logstash/config/mysql1.conf"
3.退出,并重启logstash
exit
docker restart logstash
4.查看logstash日志,可以看到已经查询到了最新的数据:
docker logs -f logstash
5.使用kibana查看,可以看到logstash把最新的数据插入到了ES:
product
category
3. 总结
本文主要讲解使用多文件的方式,利用logstash自动同步多张表数据到ES。
需要注意的点是:
- 每个配置文件的同步点文件不能相同
- 配置文件对应数据库相关的字段、表名等都不能为大写,否则会出现异常。
以上是关于《果然新鲜》电商项目(45)- 利用Logstash自动同步数据库内容到ES(多文件方式)的主要内容,如果未能解决你的问题,请参考以下文章