0

我試圖使用jdbc河爲彈性搜索提供數據,但這條河沒有獲取所有數據。我在MySQL表中有450000條記錄,但在ES中我只得到大約230000條記錄。ElasticSearch jdbc河

這裏是我的ES河設置:

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{ 
    "type" : "jdbc", 
    "jdbc" : { 
     "url" : "jdbc:mysql://localhost:3306/test", 
     "user" : "test", 
     "password" : "test", 
     "sql" : "select * from test" }, 
     "index":{ 
     "index" : "test", 
     "bulk_size":600, 
     "max_bulk_requests":10, 
     "bulk_timeout":"5s", 
     "autocommit":"true" 
     } 
}' 

我已經看過彈性搜索文檔中,但我無法找到解決方案。 我正在使用river-jdbc-1.1.0.2版本。

+0

1.您使用的是哪種版本的elasticsearch? 2.您的elasticsearch JVM配置是什麼? 3.您是否檢查數據和tmp數據之間是否有足夠的空間來集羣? – eliasah 2014-09-16 09:33:28

回答

0

你更新喜歡你需要索引450000。和你的腳本具有下列參數

"bulk_size":600, 
    "max_bulk_requests":10, 
    "bulk_timeout":"5s" 

刪除bulk_timeout 5秒,並降低堆積的大小和max_bulk_request。由於您正在將450000個文檔編入索引來彈性搜索某些數據缺失的位置,而這些參數。

假設您沒有提及上述參數,即使我們錯過了記錄。 因此,以下是使用河流來控制河流數據索引數據的最佳參數。

"bulk_size":160, 
    "max_bulk_requests":5, 

以前我有這個問題。我解決了在我的河流劇本中使用上述參數的問題。如果你應用上述參數,它肯定會有效。

希望它有幫助!