我的应用程序在ElasticSearch上创建索引模板。稍后,应用程序将更新,需要更新索引模板以支持新字段。
有没有办法为索引模板设置一些标识符 (除了它的名字总是相同的),这样我的应用程序可以 比较应用版本和部署之间的这些值 版? (唯一ID / ETag /其他)
或者,如果我无法发现差异:成本是多少 多次修改索引模板,主要是修改 没有实际变化?
我可以找到一个索引使用哪个模板(以及它的哪个版本, 如果存在这样的能力)?
感谢。
答案 0 :(得分:1)
创建索引模板时,您可以使用映射元数据来存储所需的额外信息,以了解创建映射的应用程序版本。
PUT _template/my_template
{
"template" : "logstash-*",
"mappings" : {
"logs" : {
"_meta" : {
"product" : "my_product",
"version" : "1.0.1"
},
"_source" : {"enabled" : "true"},
"properties" : {
}
}
}
}
然后查询现有索引以查找上次创建的索引,然后获取其映射。
GET logstash-2015.10.08/_mapping
你会在里面找到映射和元数据。
这对于存储映射关联的产品版本非常有用。
答案 1 :(得分:1)
"version": <version number>
来使用ElasticSearch的模板版本控制功能。 答案 2 :(得分:0)
我之前通过使用版本号,构建ID或时间戳作为索引名称的一部分(并使用索引别名指向每个应用程序的相关索引)解决了这个问题。 / p>
有关更详细的示例,请参阅此帖子:https://www.elastic.co/blog/changing-mapping-with-zero-downtime