使用logstash从mysql到elasticsearch的海量数据导入

xxhby3vn  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(253)

我正在寻找一个解决方案,以加快mysql数据,但在尝试索引后,我没有找到解决方案,以加快mysql计数(*)数据。所以我使用elasticsearch来获得更好的性能。我在mysql中有大约300万条记录,我想用join导入所有记录,所以我使用php elasticsearch插件来导入数据,但也需要很长时间。然后我使用logstash并创建一个脚本来读取数据,但它也不起作用。我整个晚上都在运行我的系统,然后logstash只会插入60万条记录。那么解决这个问题的方法是什么呢?我是否需要提高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吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题