elasticsearch Logstash在弹性搜索中插入记录时跳过记录,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Logstash在弹性搜索中插入记录时跳过记录,elasticsearch,logstash,elasticsearch,Logstash" />

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

elasticsearch Logstash在弹性搜索中插入记录时跳过记录,elasticsearch,logstash,elasticsearch,Logstash,我不熟悉弹性搜索。我使用Logstash将数据从PostgreSQL数据库推送到弹性索引。我通常在配置文件中设置jdbc\u page\u size=>100000,以加快接收速度。然而,即使logstash日志显示所有数据都已被推送,数据也不会被完全推送。因此,我设置了jdbc\u page\u size=>25000,这就解决了我的问题 我面临这个问题,尤其是PostgesSQL(不是MySQL或MS SQL Server)。如果有人有任何见解,请澄清为什么会发生这种情况 编辑: 按要求配置

我不熟悉弹性搜索。我使用Logstash将数据从PostgreSQL数据库推送到弹性索引。我通常在配置文件中设置
jdbc\u page\u size=>100000
,以加快接收速度。然而,即使logstash日志显示所有数据都已被推送,数据也不会被完全推送。因此,我设置了
jdbc\u page\u 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不提供相同顺序的记录,所以请在查询中添加ORDERBY子句,它将解决您的问题。 您可以尝试以下配置,它正在工作

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

运行
curl-XGET localhost:9200/_cat/thread\u pool/bulk,index?v&h=id,name,active,rejected,completed
时会得到什么?您在ES日志中看到任何错误吗?我没有收到任何错误。活动值和拒绝值为0。完成值如何?命名活动拒绝完成\bulk 0 1725905索引0 0 1 bulk 0 2044705索引0 0 12 S1VEM5x-RAG7FHlsZ2hrvA bulk 0 1980739 S1VEM5x-RAG7FHlsZ2hrvA索引0 0 17的非零值完整的