2014-03-19 55 views
1

我使用的是0.9版,我有這種很幼稚的方法來更新文件,基本上做了比較和交換:
(僅適用於相關的代碼所示)爲什麼我的幼稚Elasticsearch更新頻繁出現文檔版本衝突?

for (int i = 0; i < MAX_RETRY; i++) { 
     GetResponse get = client.prepareGet().execute().actionGet(); 
     // Assume document already exists 
     try { 
       client 
       .prepareIndex() 
       .setId(id) 
       .setSource(newDoc) 
       .setVersion(get.getVersion()) 
       .execute() 
       .actionGet(); 
       // Successfully updated 
     } catch (VersionConflictEngineException e) { 
      continue; //retry 
     } 
     throw UpdateFailedException(); 
    } 

代碼適用於大多數的更新,但也比我預期的版本衝突更頻繁地失敗。奇怪的是,它似乎總是失敗時,服務器文檔是預期版本的+1。有什麼明顯的我失蹤了?

我知道Elasticsearch有一個適當的更新功能,但我不能使用這臺ATM。

回答

0

原來我只是因爲錯誤而非常頻繁地更新文檔。