JDBC输入Logstash插件多次从mysql获取数据

时间:2019-07-04 04:01:43

标签: elasticsearch logstash

Logstash jdbc输入插件多次从mysql获取数据,并继续在Elasticsearch中创建文档

对于mysql中的600行,它在elasticsearch中创建了8581812个文档

我创建了多个配置文件以从mysql中的每个表中获取数据,并将其放在/etc/logstash/conf.d文件夹中 作为sudo systemctl启动logstash服务启动logstash 运行以下命令执行文件 / usr / share / logstash / bin / logstash -f /etc/logstash/conf.d/spt_audit_event.conf 数据成功获取

input{
jdbc {
jdbc_driver_library => "/usr/share/jdbc_driver/mysql-connector-java-5.1.47.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://:3306/"
jdbc_user => ""
jdbc_password => ""
statement => "select * from spt_identity"
}
}

output {
elasticsearch {
"hosts" => "localhost:9200"
"index" => ""
}
stdout {}
}

实际结果

elasticsearch中的文档数量不断增加,达到了8581812,但是mysql表中只有600行 是插件中的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要提及elasticsearch的unqiue ID

为了避免在elasticsearch出现重复问题,您可能需要在elasticsearch添加文档的唯一ID。

通过在输出中添加logstash.conf来修改"document_id" => "%{studentid}",如下所示。

output {
  stdout { codec => json_lines }
  elasticsearch {
  "hosts" => "localhost:9200"
  "index" => "test-migrate"
  "document_id" => "%{studentid}"
  }

对于您而言,它不是学生身份,而是其他。找到相同的内容并将其添加到您的配置中。