我使用logstash和JDBC MySQL插件将表从MySQL数据库传输到Elasticsearch(ES)存储。
我在mysql数据库中有多个表,例如ex_1,ex_2,ex_3等...我想用' ex _'选择所有表。在其中使用该表名作为我ES中的document_type。因此,如果我的表名是' ex_1'它应该在我的ES中创建一个ex_1类型的文档。
我可以通过硬编码为一个表做这个,我的logstash配置文件看起来像这样
#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亿个文档) 我将不胜感激任何帮助。 感谢。