索引模板的部分更新

Pao*_*sco 2 elasticsearch

在ElasticSearch中,是否可以对索引模板进行部分更新?

例如,我尝试仅使用以下内容更改默认分析器(使用 Sense):

PUT /_template/testtemplate/_update
{
    "settings": {
        "index":{
            "analysis": {
               "analyzer": {
                  "default": {
                     "type": "whitespace"
                  }
               }
            }
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我收到一条错误消息Invalid index name [_template], must not start with '_': .

我是否必须使用 PUT 再次传递完整模板,或者是否有其他方法可以进行部分更新?

Val*_*Val 5

部分更新仅适用于文档(并且在某种程度上适用于映射类型),不适用于索引模板。因此,我确认您需要再次存储完整的索引模板,而不仅仅是要更新的一小部分。

正如您在 的源代码中看到的RestUpdateAction.java_updateREST 端点需要一个{index}名称、一个{type}名称和一个{id}. 因此,在上面的示例中,该端点认为这_template是一个索引名称并抱怨。

同样,在用于创建索引模板的 REST 端点中,RestPutIndexTemplateAction.java您可以看到该路径根本_template不支持该端点。_update