2017-07-29 89 views
0

我是新增彈性搜索。我正在使用Logstash將PostgreSQL數據庫中的數據推送到彈性索引。我通常在配置文件中設置jdbc_page_size => 100000以加快攝取。但是,即使logstash日誌表示所有數據已被推送,數據也未被完全推送。所以,我設置了jdbc_page_size => 25000,它解決了我的問題Logstash正在跳過記錄,同時在彈性搜索中插入記錄

我面臨這個問題,尤其是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}" 
} 
} 
+0

你明白了什麼,當你運行'捲曲-XGET本地主機:9200/_cat/thread_pool /散裝,索引v&H = ID,名字,活躍,拒絕completed'和你看到的ES任何錯誤日誌? – Val

+0

我沒有收到任何錯誤。激活和拒絕值爲0. –

+0

完成了什麼? – Val

回答

1

PostgreSQL沒有給出相同的順序記錄,這樣親切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}" 
} 
} 
+0

這似乎解決了這個問題。謝謝。 –