# 登録済みの templateの一部を変更することは可能でしょうか

**URL:** <https://discuss.elastic.co/t/template/162100>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [December 26, 2018, 6:32am UTC](https://discuss.elastic.co/t/template/162100 "2018-12-26T06:32:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![tsukahara](https://avatars.discourse-cdn.com/v4/letter/t/cab0a1/32.png) [@tsukahara](https://discuss.elastic.co/u/tsukahara)\
**Post date:** [December 26, 2018, 6:32am UTC](https://discuss.elastic.co/t/template/162100/1 "2018-12-26T06:32:30Z")

</div>

現在 Elasticsearch6.2.2を使用しております。  
登録済みの templateのうち一部変更したいのですが  
上書きで templateを定義しなおすのではなく  
変更箇所のみ指定する方法はありますでしょうか。

登録例

```

PUT _template/t_aa
{
    "index_patterns": [
      "aa"
    ],
    "settings": {
      "index": {
        "refresh_interval": "-1",
        "number_of_shards": "5",
        "number_of_replicas": "0"
      }
    }
}

```

＃実際には mappingsの定義が5000行程度あります。

上記の定義のうち、以下のみ変更したいのです。  
"number\_of\_replicas": "1"

KibanaのDev Toolsで templateの定義をGETで出力して、  
上記 number\_of\_replicasの定義のみ変更して上書きすることはできたのですが、  
変更箇所のみ指定する方法があればそうしたいと思い  
質問させていただきました。

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [December 26, 2018, 1:00pm UTC](https://discuss.elastic.co/t/template/162100/2 "2018-12-26T13:00:10Z")

</div>

こんにちわ。

登録されたdocumentには\_updateがありますが、index templateにはなさそうです。  
ですので、\_template/t\_aaにPOSTやPUTで部分更新するのは難しそうです。

> <https://github.com/elastic/elasticsearch/blob/v6.2.2/server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestPutIndexTemplateAction.java>

> "number\_of\_replicas": "1"

が適用されるようにしたい、ということであれば、何もindex tempalteを上書きしなくても、複数マッピングを定義すれば良いと思います。

Multiple Templates Matching

> **[Index Templates | Elasticsearch Reference \[6.2\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-templates.html)**

ここにある **order** に着目していただいて、orderの値を増やしたtemplateで値を上書きすればできると思います。

こちらでは、こんな感じで確認しています。

```auto
PUT /_template/template_1
{
    "index_patterns" : ["hogehoge"],
    "settings" : {
        "number_of_shards" : 1,
        "number_of_replicas": 1
    },
    "mappings" : {
        "doc" : {
            "_source" : { "enabled" : false },
            "properties": {
              "value": {
                "type": "integer"
              },
              "fugafuga": {
                "type": "keyword"
              }
            }
        }
    }
}

PUT /_template/template_2
{
    "index_patterns" : ["hogehoge"],
    "order" : 1,
    "settings" : {
        "number_of_replicas" : 0
    }
}

```

この状態でhogehogeインデックスを作成すれば、tempalte\_1とtemplate\_2が適用され、  
template\_2の方がorderが大きいので優先され、number\_of\_replicasは0が適用されます。  
（order未指定時は0になるため、template\_2のorder:1が勝つイメージ）

もし、KibanaのDevToolsがお手元にあれば、上のindex\_templateを作成していただいたのち、  
下記を実行いただければ、動作が確認できるかと思います。

```auto
# tempalte_1とtemplate_2が適用されるindexを作成
PUT hogehoge

# 元のtempalte_1の設定が生きていることを確認。
GET hogehoge/_mapping

# number_of_replicas が 0になっていることを確認
GET hogehoge/_settings

```

ご参考になれば幸いです。

---

<div class="post-metadata">

**Author:** ![tsukahara](https://avatars.discourse-cdn.com/v4/letter/t/cab0a1/32.png) [@tsukahara](https://discuss.elastic.co/u/tsukahara)\
**Post date:** [January 7, 2019, 12:16am UTC](https://discuss.elastic.co/t/template/162100/3 "2019-01-07T00:16:31Z")

</div>

回答ありがとうございます。  
連絡遅れてすみません。  
tempateのupdate不可情報、orderでの上書き確認ありがとうございます。

せっかく情報をいただいたのですが、管理を簡単にしたいので  
1種類のindexには1つのtemplateの定義としたく、  
今回は定義しなおすことで対応したいと思います。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 4, 2019, 12:16am UTC](https://discuss.elastic.co/t/template/162100/4 "2019-02-04T00:16:35Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
