logstash增量同步mysql数据到es

Posted JAVA开发蓝猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logstash增量同步mysql数据到es相关的知识,希望对你有一定的参考价值。

本篇本章地址:https://www.cnblogs.com/Thehorse/p/11601013.html

今天我们来讲一下logstash同步mysql数据到es

 

我认为呢,logstash是众多同步mysql数据到es的插件中,最稳定并且最容易配置的一个。

 

input {
stdin {
}

jdbc {
type => "xxx"
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/yinhelaowu"
jdbc_user => "root"
jdbc_password => "root"
jdbc_driver_library => "mysql1/mysql-connector-java-5.1.17-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => true
jdbc_page_size => "500"
record_last_run => true
use_column_value => true
tracking_column => "id"
last_run_metadata_path => "mysql1/jdbc1"
clean_run => "false"


statement_filepath => "mysql1/jdbc.sql"
schedule => "* * * * *"
clean_run => false
}

}

 

我来讲一下这些属性的作用,像type这个 主要是为了声明这个jdbc{} 这个处理对象的,type可以定义任意值,

jdbc_connection_string ,这个是数据库地址 还有用户名密码

jdbc_driver_library,logstash是需要使用jdbc来连接mysql的,并且使用logstash必须配置java环境,jdk1.8以上

jdbc_driver_class给本次连接起名 statement_filepath 这个是执行的sql语句 

 schedule 是表示多长时间同步一下数据 如果是******表示一分钟同步一次

last_run_metadata_path这个会记录你最后一次同步数据的一些值,比如你可以记录创建时间,和自增的id,

type索引类型

clean_run 是否清楚执行过的数据

 

到了下边

#这是输出流

output {
#这个type是上面jdbc的type,有了这个if就可以进行批处理 if [type]=="TInquiryInfo"{ elasticsearch {
    #这边的端口一定是9200,java中使用的端口是9300这边不要弄混了 hosts => ["localhost:9200"] # 索引名称 index => "ca-inquiry" # type名称 document_type => "TInquiryInfo" # 文档id,inquiryId为sql文件中查询出的字段名 document_id => "%{inquiryId}" } } }


下面是执行的sql写法

SELECT c.*,CONCAT(CONCAT(c.lat,\',\'),c.lng) AS location,u.`praise`,u.`age`,u.`area_id` FROM zsf_carftsmanship c
LEFT JOIN zsf_user u ON c.user_id = u.`id` WHERE c.id > :sql_last_value

像elasticsearch这种大数据量查询,多表关联查询无疑对性能有很大的冲击,所以这边我直接做了关联查询

这样的话可以大大提高es的查询性能,这个:sql_last_value是last_run_metadata_path中记录的值

 






 

以上是关于logstash增量同步mysql数据到es的主要内容,如果未能解决你的问题,请参考以下文章

干货 | Debezium实现Mysql到Elasticsearch高效实时同步

mysql同步数据到es

Logstash配置同步mysql到es配置

通过Logstash全量和增量同步Mysql一对多关系到Elasticsearch

MySQLmom程序增量同步MySQL数据到ES

实现mysql与ES的增量数据同步