gpt4 book ai didi

templates - 如何在所有现有索引上更新dynamic_templates?

转载 作者:行者123 更新时间:2023-12-03 00:04:58 26 4
gpt4 key购买 nike

我正在使用ElasticSearch 5.1和elasticsearch.js 5.0。我们在生产中有许多不同的应用程序,它们可能具有我们的平台默认索引或自定义索引。而且我们不知道他们的名字。对于新索引,我能够使用 dynamic_template 添加以下 indices.putTemplate() :

var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({ /*...*/ });
var params = {
//...
"body" : {
"template":"*",
"settings":{
"index.mapper.dynamic":true
//...
},
"mappings":{
"_default_":{
"properties":{
//...
},
"dynamic_templates":[{
"template_purchases_inner_fields": {
"path_match":"purchases.*",
"mapping": { "include_in_all": false }
}
}
//, ...
]
}
}
}
};
client.indices.putTemplate(params,function(err,resp){})

但是, Index templates docs

Templates are only applied at index creation time. Changing a template will have no impact on existing indices



Dynamic templates docs

New templates can be appended to the end of the list with the PUT mapping API



PUT mapping API有一些示例,都不适合我的情况。使用 indices.putMapping() 的答案将特别有帮助,但不是必需的。谢谢你的时间!

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

var dynamicTemplates = [{
"template_purchases_inner_fields": {
"path_match": "purchases.*",
"mapping": { "include_in_all": false}
}
}
//...
];

params = { body: { "dynamic_templates": dynamicTemplates }};
params.index = "_all";
params.type = "_default_";
//...
client.indices.putMapping(params,function(err,resp){})

这是通过Linux curl删除的代码,带有 properties字段。 请注意,您应该在此处重新添加其他模板,以不覆盖以前的模板:

curl -XPUT http://localhost:9200/_all/_default_/_mapping -d "{\"_default_\":{\"dynamic_templates\":[{\"template_purchases_inner_fields\":{\"mapping\":{\"include_in_all\":false},\"path_match\":\"purchases.*\"}}]}}"

在两种情况下检查 elasticsearch-head,映射也会在现有索引上更新,就好像它可以正常工作一样。但是,没有实现 include_in_all=false行为,这意味着我们仍然可以看到在包含现有索引的 _all下包含内部对象的记录上搜索 purchases.*的结果。

相关项目:
  • Create or update mapping in elasticsearch
  • ElasticSearch client.indices.putMapping always fail
  • PutMapping api url is incorrect
  • 最佳答案

    当前的答案是我们不能基于Index templates docs将其应用于现有索引:

    Templates are only applied at index creation time. Changing a template will have no impact on existing indices

    关于templates - 如何在所有现有索引上更新dynamic_templates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685675/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com