Logstash在弹性搜索中插入记录时跳过记录

时间:2017-07-29 06:33:06

标签: elasticsearch logstash

我是弹性搜索新手。我正在使用Logstash将数据从PostgreSQL数据库推送到弹性索引。我通常在配置文件中设置jdbc_page_size => 100000以便更快地摄取。但是,即使logstash日志表示已推送所有数据,也不会完全推送数据。所以,我设置jdbc_page_size => 25000,这解决了我的问题

我正面临这个问题,尤其是PostgesSQL(不是MySQL或MS SQL Server)。如果有人有任何见解,请澄清为什么会发生这种情况。

编辑: 按要求配置文件:

input {
jdbc {
jdbc_connection_string => "jdbc:postgresql://ip:5432/dbname"
jdbc_user => "postgres"
jdbc_password => "postgres"
jdbc_driver_library => "/postgresql.jar"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_paging_enabled => true
jdbc_page_size => 25000
statement => "select * from source_table"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "sample"
document_type => "docs"
document_id => "%{id}"
}
}

1 个答案:

答案 0 :(得分:1)

PostgreSQL不会以相同的顺序给出记录,所以请在查询中添加order by子句,它将解决您的问题。 您可以尝试以下配置,它正在工作。

input {
jdbc {
jdbc_connection_string => "jdbc:postgresql://ip:5432/dbname"
jdbc_user => "postgres"
jdbc_password => "postgres"
jdbc_driver_library => "/postgresql.jar"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_paging_enabled => true
jdbc_page_size => 25000
statement => "select * from source_table order by id desc"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "sample"
document_type => "docs"
document_id => "%{id}"
}
}