批量MySQL到Elasticsearch转移

时间:2016-07-27 23:48:12

标签: mysql logstash

我使用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亿个文档) 我将不胜感激任何帮助。 感谢。

0 个答案:

没有答案