mysql - Logstash:MySQL 到 Elasticsearch(大表)?

标签 mysql database elasticsearch import logstash

我正在尝试将一个相当大的数据库导入 Elasticsearch。它有 400 万行跨 2 列(VARCHAR(250) 和 INT(20))。

当我运行logstash.conf 文件将数据库导入Elasticsearch 并在SQL 命令中添加LIMIT 0,100 时,该命令运行时没有任何问题。所有行最终都会由 Logstash 在终端中返回,然后我可以在 Elasticsearch 的相关节点中看到它们。

当我尝试一次通过 Logstash 运行所有行时,它输出:

设置:默认管道工作人员:1 管道主体已启动

然后什么也没有发生。

如何将这么大的表添加到 Elasticsearch 中?

这是我的logstash.conf 脚本:

input{

  jdbc {
jdbc_driver_library => "/opt/logstash/mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar"

jdbc_driver_class => "com.mysql.jdbc.Driver"

jdbc_connection_string => "jdbc:mysql://<ip number>:3306/database"

jdbc_validate_connection => true

jdbc_user => "elastic"

jdbc_password => "password"

schedule => "* * * * *"

    statement => "name, id from master_table"

    }

}

 output

 {
  elasticsearch
    {

    index => "search"
    document_type => "name"
    document_id => "%{id}"
    hosts => "127.0.0.1:9200"
}stdout { codec => json_lines }
}

最佳答案

我会将 fetch_size 设置为 10000 个文档之类的值。 在这里,我认为它尝试将所有记录加载到内存中,这可能需要几个小时,而且可能无法容纳。

参见https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#_dealing_with_large_result_sets

关于mysql - Logstash:MySQL 到 Elasticsearch(大表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043091/

相关文章:

php - 使用php在sql查询中的where条件中传递数组

mysql - InnoDB - 回滚连接的所有事务

elasticsearch - 双嵌套elasticsearch查询不适用于term子句

mysql - 根据 SQL 中的列和两个条件选择不同的行

mysql - 包含相关产品数量的类别列表

MySQL 联结表外键

mysql - 表中的数据库列限制

database - oracle中没有 "Cube"函数怎么写查询?

elasticsearch - KIbana没有显示新创建的索引

elasticsearch - 如何在Kibana可视化中做 “success rate”?