使用logstash从MySQL导入大量数据到elasticsearch

时间:2018-05-02 10:16:23

标签: mysql elasticsearch bigdata query-performance

我正在寻找加速MySQL数据的解决方案,但在尝试索引后,我没有找到加速MySQL计数(*)数据的解决方案。所以我使用elasticsearch来获得更好的性能。我在MySQL中有大约300万条记录,我想用连接导入所有记录,所以我使用PHP elasticsearch插件导入数据,但这也需要很长时间。然后我使用logstash并创建一个脚本来读取数据,但它也无法正常工作。我整晚都在运行我的系统,然后logstash将只插入600 000条记录。那么这个解决方案是什么?我是否需要提高MySQL性能以导入elasticsearch或以其他任何方式将大数据导入elasticsearch。

检查我的脚本。

input {
  jdbc { 
    jdbc_connection_string => "jdbc:mysql://172.17.0.3:3306/repairs_db"
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => ""
    jdbc_page_size => 50000 
    jdbc_paging_enabled => true
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # our query
    statement => "SELECT r.id,r.brand_id,r.product_brand,r.product_description,r.store_id,r.product_group,r.product_id,r.itm_product_group_desc,r.first_name,r.last_name,r.status,r.damaged,r.is_extended_warranty,r.is_floor_stock,r.is_inhome,r.callcentre,r.is_bsp_case,r.created,r.updated,r.is_sandbox_mode,pro.itm_descriptor,st.name as store_name,rp.name as repairer_name from requests r JOIN products pro ON r.product_id = pro.id JOIN stores st ON r.store_id = st.id JOIN repairers rp ON r.repairer_id = rp.id"
    }
  }
output {
  stdout { codec => json_lines }
  elasticsearch {
  "hosts" => "172.17.0.3:9200"
  "index" => "req-migrate"
  "document_type" => "data"
  }
}

请建议我将数据加载到elasticsearch中。我们可以在这种情况下使用MySQL吗?

0 个答案:

没有答案