2015-07-22 18 views
0

我準備將elasticsearch舊索引遷移到新索引。該索引用作用戶存儲,因此將來的用戶數量將增加。常見的情景 - 從索引中選擇用戶。所以很明顯,更多的用戶 - 搜索過程較慢,因爲彈性需要循環大量文檔數量。如何計算elastcisearch分片數?

假設currentRate是每秒elasticsearch當前請求速率,currentUserNumber是在elasticsearch總用戶在現在,currentNumberOfShards是當前碎片數(假定爲僅2碎片都進入地點理想一個物理節點簡單)。

另外它是已知的預計futureRatefutureUserNumber

因此,它是正確的fomular估計碎片爲elasticsearch的新號碼:

futureNumberOfShards = (futureRate/currentRate) * (futureUserNumber/currentUserNumber) 

OT還有,我不計算一些其他的條件?

注意

我明白elasticsearch可以執行一些optimnization,但這樣的條件很難計算外elasticsearch所以它更正確計算碎片的數量爲最壞的情況。

注2

實際上用戶可以具有不同數量的字段。僅用於搜索4-5個字段(並非所有用戶都具有全部)。這會影響搜索性能嗎?如何?

回答

0

對於elasticsearch,最佳性能是當碎片數相等的數據節點數。但是這使得未來難以增加數據節點的數量。所以你可以選擇 - 現在有更好的性能,或爲未來節點留出空間。在我的集羣中 - 開始時有兩個節點,但是我製作了4個碎片,現在我有4個數據節點,而性能恰到好處。