elasticsearch - Logstash在 Elasticsearch 中插入记录时跳过记录

标签 elasticsearch logstash

我是 Elasticsearch 的新手。我正在使用Logstash将PostgreSQL数据库中的数据推送到 flex 索引。我通常在配置文件中设置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}"
}
}

最佳答案

PostgreSQL不会以相同的顺序提供记录,因此请在查询中按子句添加order,它将解决您的问题。
您可以尝试以下配置,它可以正常工作。

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}"
}
}

关于elasticsearch - Logstash在 Elasticsearch 中插入记录时跳过记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386143/

相关文章:

oracle - Docker中的Logstash没有响应

elasticsearch - 禁用对索引模板中不存在的字段的分析

elasticsearch - Elasticsearch索引分析器设置

elasticsearch - 数学函数不适用于ElasticSearch脚本中的运算符

elasticsearch - 将Elasticsearch jriver jdbc插件与索引设置一起使用时发生错误

mysql - 并非所有来自 Logstash 的数据都被 Elasticsearch 索引

elasticsearch - 使用Logstash和XPath处理嵌套对象

logstash - grok 多条消息并用不同的标签处理它们

elasticsearch - 我在logstash conf文件的sql_last_value字段中连续收到值0.这是什么问题?

elasticsearch - 无法从neo4j创建Elasticsearch索引