批量MySQL到Elasticsearch传输

批量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

我正在使用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 {

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