elasticsearch,mapping,Templates,elasticsearch,Mapping" /> elasticsearch,mapping,Templates,elasticsearch,Mapping" />

Templates 如何在所有现有索引上更新动态_模板?

Templates 如何在所有现有索引上更新动态_模板?,templates,elasticsearch,mapping,Templates,elasticsearch,Mapping,我正在使用ElasticSearch 5.1和。我们在生产中有许多不同的应用程序,其中可能有我们的平台默认索引或自定义索引。我们不知道他们的名字。对于新索引,我可以使用以下方法添加: var elasticsearch=require('elasticsearch'); var client=new elasticsearch.client({/*…*/}); var params={ //... “正文”:{ “模板”:“*”, “设置”:{ “index.mapper.dynamic”:tr

我正在使用ElasticSearch 5.1和。我们在生产中有许多不同的应用程序,其中可能有我们的平台默认索引或自定义索引。我们不知道他们的名字。对于新索引,我可以使用以下方法添加:

var elasticsearch=require('elasticsearch');
var client=new elasticsearch.client({/*…*/});
var params={
//...
“正文”:{
“模板”:“*”,
“设置”:{
“index.mapper.dynamic”:true
//...           
},
“映射”:{
“\u默认值”:{
“财产”:{
//...
},
“动态模板”:[{
“模板\采购\内部\字段”:{
“路径匹配”:“购买。*”,
“映射”:{“在所有映射中包含所有映射”:false}
}
}
//, ...
]
}
}
}
};
client.index.putTemplate(参数,函数(err,resp){})
但是,政府说,

模板仅在创建索引时应用。更改模板不会对现有索引产生影响

可以使用PUT映射API将新模板追加到列表的末尾

有一些例子,没有一个适合我的场景。使用的答案会特别有用,但不是必需的。谢谢你的时间


[2017年8月21日日食日编辑] 这是我试图通过JS API更改的代码:

var dynamicTemplates=[{
“模板\采购\内部\字段”:{
“路径匹配”:“购买。*”,
“映射”:{“在所有映射中包含所有映射”:false}
}
}
//...
];
params={body:{“dynamic_templates”:dynamicTemplates};
params.index=“_all”;
params.type=“\u默认值”;
//...
putMapping(参数,函数(err,resp){})
这是通过LinuxCurl编写的代码,删除了
properties
字段请注意,您应该在此处重新添加其他模板以避免覆盖以前的模板:

curl-XPUThttp://localhost:9200/_all/_default_/_mapping -d“{\”默认值“:{\”动态模板“:[{\”模板购买\内部字段\“:{\”映射\“:{\”包含在所有内容中\“:false},\”路径匹配\“:\”购买。*\'}]}”
在这两种情况下,映射也在现有索引上更新,就好像它起作用一样。但是,
include_in_all=false
行为没有实现,这意味着我们仍然可以在包含
purchases.*
现有索引下的内部对象的记录上看到搜索
\u all
的结果


相关项目:


目前的答案是,我们无法根据以下条件将其应用于现有指数:

模板仅在创建索引时应用。更改模板不会对现有索引产生影响

使用Put映射API(通过curlhttp和JS客户端),我能够将映射更新到现有索引;但是,未实现
include\u in\u all=false
行为