繁体   English   中英

ElasticSearch索引模板版本控制

[英]ElasticSearch index template versioning

我的应用程序在ElasticSearch上创建索引模板。 稍后,应用程序将更新,需要更新索引模板以支持新字段。

  1. 有没有办法为索引模板设置一些标识符(除了它的名称总是相同的),这样我的应用程序可以比较应用程序版本和部署版本之间的这些值? (唯一ID / ETag /其他)

  2. 或者,如果我无法检测到差异:多次修改索引模板的成本是多少,主要是不执行实际更改的修改?

  3. 我可以找到它使用哪个模板的索引(以及它的哪个版本,如果存在这样的能力)?

谢谢。

创建索引模板时,您可以使用映射元数据来存储所需的额外信息,以了解创建映射的应用程序版本。

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. 是的,您可以通过在模板中包含"version": <version number>来使用ElasticSearch的模板版本控制功能。

资料来源: https//www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html#versioning-templates

  1. 修改模板没有任何成本,因为它只存储在ES的数据库中{读作'ES'使用的存储空间}。 唯一的区别是模板的更新仅适用于正在创建的新索引,不会应用于现有索引。

我之前通过使用版本号,构建ID或时间戳作为索引名称的一部分(并使用索引别名指向每个应用程序的相关索引)解决了这个问题。

有关更详细的示例,请参阅此帖子: https//www.elastic.co/blog/changing-mapping-with-zero-downtime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM