批量MySQL到Elasticsearch传输
我正在使用logstash和JDBCMySQL插件将表从MySQL数据库传输到Elasticsearch(ES)存储 我在mysql数据库中有多个表,例如ex_1、ex_2、ex_3等等。。。我想选择所有包含“ex”的表,并将该表名用作我的ES中的文档类型。因此,如果我的表名为“ex_1”,它应该在我的ES中创建一个ex_1类型的文档 我可以对一个表进行硬编码,我的logstash配置文件如下所示批量MySQL到Elasticsearch传输,mysql,logstash,Mysql,Logstash,我正在使用logstash和JDBCMySQL插件将表从MySQL数据库传输到Elasticsearch(ES)存储 我在mysql数据库中有多个表,例如ex_1、ex_2、ex_3等等。。。我想选择所有包含“ex”的表,并将该表名用作我的ES中的文档类型。因此,如果我的表名为“ex_1”,它应该在我的ES中创建一个ex_1类型的文档 我可以对一个表进行硬编码,我的logstash配置文件如下所示 #file: mdb.conf input { jdbc { j
#file: mdb.conf
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://linktomydb?autoReconnect=true&useSSL=false"
# The user/password of MySQL
jdbc_user => "xyz"
jdbc_password => "*****"
jdbc_driver_library => "mysql-connector-java-5.1.39-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * from ex_1"
}
}
filter {
#to measure the ingestion rate
metrics {
meter => "events"
add_tag => "metric"
}
}
output {
if "metric" in [tags] {
elasticsearch {
hosts => 'localhost'
index => "logstash-metrics"
}
}
else {
#stdout { codec => json_lines }
elasticsearch {
#protocol => http
index => "xyz"
document_type => "ex_1"
#document_id => "%{ex_rowid}"
hosts => "localhost"
workers => 4
flush_size => 1000
}
}
}
我想对mysql中存在的100个表自动执行此过程,并希望确保sql db中的表名与ES存储中的文档类型相同。一般来说,我对logstash和ES很陌生。
任何优化建议都是受欢迎的,因为这是一个大规模的文件传输(大约1亿个文档)
我将感谢任何帮助。
谢谢