2012-09-10 60 views
3

我有一個雙節點elasticsearch集羣,它被配置爲有5個分片和2個副本。在我爲大約2M記錄的db表建立索引之後,在相應的高速緩存下生成了124個段。這個數字太大了,恐怕很容易達到nofiles的硬性限制,並增加更多的索引。如何減少elasticsearch索引中的段數

有沒有辦法減少每個索引段的數量?由於

回答

6

你有過在elasticsearch merge policy控制。合併設置可以使用Update Index Settings API動態更新。例如,您可以將index.merge.policy.segments_per_tier減少到10以下的某個值,這將減少每個層上的分段數量,並因此減少分段的總數。

您也可以手動的力用Optimize API合併。例如:

$ curl -XPOST 'http://localhost:9200/your-index/_optimize?max_num_segments=1' 
+0

感謝您的回答,我認爲這應該工作。我在elasticsearch命令行中添加了「-Des.max-open-files = true」,試圖查看允許的最大nofiles。但是當我開始這個過程時,日誌會顯示「max_open_files [0]」。這真是令人困惑,你知道爲什麼發生這種情況,我怎麼才能正確地獲得這些信息? – Sheng

+0

爲了測試打開文件的數量,elasticsearch試圖創建儘可能多的文件,它位於位於elasticsearch主目錄中的'work \ open_files'目錄中。是否有可能您正在運行elasticsearch的用戶沒有足夠的權限來創建此目錄? – imotov

+0

imotov,感謝您的更新。我認爲如果elasticsearch使用這種方法來檢測「max no。fp」,這可能是一個壞主意。對於我的過程,我將軟限制設置爲等於彈性搜索過程的硬限制,因此elasticsearch進行測試的方式可能會混淆其他正在打開文件的運行過程。檢查/ proc/ /限制會更好嗎? – Sheng

1

你可以在你將需要刪除引號窗口的情況下,使用下面的命令

$ curl -XPOST 'http://localhost:9200/_forcemerge?max_num_segments=5' 

降低段的最大數量。

相關問題