2017-08-02 105 views
0

我正在經歷彈性搜索並希望從ES羣集獲得一致的響應。彈性搜索如何帶回一個正在關閉的節點

我讀Elasticsearch read and write consistency

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/docs-index_.html

和一些其他的帖子,並且可以得出這樣的結論ES返回成功完成寫入所有碎片(主要+複製品)後寫操作,而不論一致性PARAM的。

讓我知道,如果我的理解是錯誤的。

我想知道是否有人知道,彈性搜索如何將一個節點/碎片添加回暫時失效的集羣中。它會在讀取請求可用之後立即開始提供讀取請求,還是在提供讀取請求之前確保它具有最新的數據?

我查找了上述問題的答案,但找不到任何答案。

由於 戈帕爾

回答

0

如果節點被從羣集中刪除,並且如果數據是最新的再次連接,Elasticsearch檢查。如果不是,那麼它將不會被用於搜索,直到它再次被更新(這可能意味着整個碎片被再次複製)。

一致性參數只是一個額外的預索引檢查,如果在集羣中有可用分片的數量(如果索引配置爲有4個副本,那麼主分片加兩個副本需要可用,if設置爲quorum)。但是,在返回客戶端之前,此參數不會改變寫入需要寫入所有可用碎片的行爲。

+0

謝謝,信息很有用。我的意圖是使用ES並獲得一致的數據。彈性搜索不確保索引數據立即可用於查詢。它需要每秒鐘在後臺運行的分片刷新操作。我們也可以選擇在每次寫入操作時進行刷新,但它有其自身的含義。 –

+0

每次寫入後都不要刷新。前段時間爲此引入了一個'refresh = wait_for'參數https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-refresh.html#docs-refresh – alr