2017-10-13 71 views
0

在我的程序中,我從elasticsearch刪除了一條記錄,然後我提取剩餘的記錄。彈性搜索刪除記錄需要多長時間?

我寫了2個獨立的方法。 1刪除記錄的方法。 另一個提取剩餘的記錄。

但是,當我運行這兩個方法它正在返回包括我刪除的所有記錄。

我正在運行程序來獲取數據後才從deleteRecords獲得成功消息,但它是給所有記錄。

幾秒鐘後如果我運行我編寫的程序來單獨提取剩餘記錄,它工作正常它將單獨返回剩餘的方法。

當我試圖運行在調試模式兩種方法也只剩餘的記錄

有什麼辦法來解決這個問題,而無需使用延遲

回答

2

該指數是每秒鐘刷新一次默認情況下返回,所以這就是爲什麼你不會立即看到結果。您可以做的是在您的刪除呼叫中附加?refresh=wait_for,以確保下一次呼叫將獲得您期望的正確結果。

請注意,添加此查詢字符串參數會稍微延遲您的呼叫。在最壞的情況下,它會在1秒後返回,這是最好的情況,它會立即返回,取決於您撥打電話的兩次刷新之間的時間。

+0

謝謝...... –

+0

其他問題,我們可以關閉嗎? – Val

0

如果您使用的是Java客戶端,那麼您正在尋找API操作的線程。

默認情況下,它是一個單獨的線程,它將執行刪除操作,除非您明確要求它在提供請求的線程上執行(與@ Val的答案匹配)。這樣API調用將會阻塞,直到操作完成。

DeleteResponse response = client.prepareDelete("documents", "doc", "1") 
     .setOperationThreaded(false) //look here!!!! 
     .get();