簡體   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