2015-08-27 119 views
6

如果我有一個15節點集羣,我必須改變修改默認數量

index.number_of_shards

值15個的所有節點上,並重啓,新的價值進入前新指標的效果?

回答

6

這是正確的更改index.number_of_shards配置文件中的默認設置將涉及更改所有節點上的設置,然後按照rolling restarts的指導原則重新啓動實例。

然而,如果這不是一個選項,如果明確指定的設置number_of_shards在創建新的索引不理想,則解決方法是使用index templates

例子:

可以創建一個index_defaults默認情況下,如下

PUT /_template/index_defaults 
{ 
    "template": "*", 
    "settings": { 
    "number_of_shards": 4 
    } 
} 

這適用於index_defaults模板中指定的所有新指標的設定。

+0

重新啓動所有節點將是一個選項,因爲它在Elasticsearch 1.7中不那麼痛苦,但我忘記了索引模板。這是這種情況下的完美解決方案!謝謝。 –

0

一旦在ElasticSearch中設置了索引的分片數,就無法更改它們。您需要創建一個具有所需數量碎片的新索引,並根據您的使用情況,然後您可能需要將數據傳輸到新索引。

我認爲這取決於用例,因爲,例如,如果您要存儲基於時間的數據(如日誌事件),關閉一個索引並使用不同數量的碎片打開一個新索引是非常合理的,所有數據都會發送到新索引,並保留舊索引進行搜索。然而,如果你的用例是,例如,存儲博客文檔,並且你的索引是按主題的話,那麼你將需要(a)如上所述用不同數量的分片創建新的索引,(b)重新索引您的數據。對於(b),我建議使用滾動和掃描API從舊索引中獲取數據。

+0

謝謝Mauricio。我正在尋找只爲新的索引更改。想知道是否需要啓動新默認的所有節點才能生效。 –