2015-06-22 80 views
0

我有一個現有的模板,我試圖只更新其中的碎片數量。更新彈性搜索模板而不覆蓋它

在做:

curl -XPOST localhost:9200/_template/my_template -d '{"template" : "my_template", "settings" : {"number_of_shards":"3"}}' 

它是覆蓋我的所有其他選項和映射。我看着update api,但它似乎只有它的文件。

所以我必須閱讀模板,然後寫回來?

另外,我可以完成在模板中使用order

謝謝!

回答

1

當您使用POST模板時,它將覆蓋以前的模板(如果存在)。所以是的,你將不得不先模板GET,讓你調整,然後POST它。 order屬性用於確定將如何執行合併如果爲相同索引定義了兩個模板,而不是您正在處理的情況。

+0

謝謝!使用'PUT'也沒有幫助。如果我將用更高的順序定義另一個模板,但設置=>#分片= 3,會發生什麼? – Udy

+0

不確定你想要做什麼,索引模板將僅適用於新索引,而不適用於以前創建的索引。你想更新現有索引的設置嗎?你可以這樣做,但是你必須使用'/ _settings'端點(https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html),而且你在將文檔插入索引後無法更改分片的數量,因此如果這是您嘗試更改的設置,則必須刪除並重新創建索引。 –

+0

我知道我無法更新現有索引的碎片數量。我想以某種方式改變一個模板而不讀之前。 (即更新)。我在想,如果在模板中使用'order'可以產生這種效果。 – Udy