我正在尝试将一个相当大的数据库导入 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 个文档之类的值。 在这里,我认为它尝试将所有记录加载到内存中,这可能需要几个小时,而且可能无法容纳。
关于mysql - Logstash:MySQL 到 Elasticsearch(大表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043091/