暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何设置 Elasticsearch 模板及新版 _index_template 和 _template 的区别

新智锦绣 2024-12-26
542

点击蓝字关注我们


Elasticsearch 是一个强大的搜索引擎,它不仅提供全文搜索的功能,还可以用来进行日志管理、实时数据分析等。在日常的使用中,我们常常会遇到如何为索引定义合适的模板(template)的问题。模板在 Elasticsearch 中起着非常重要的作用,能够让我们对索引的字段类型、分析器、映射和设置等进行定义。

本文将带您了解如何设置 Elasticsearch 模板,并深入解析新版 _index_template 和旧版 _template 之间的区别。


什么是 Elasticsearch 模板?



在 Elasticsearch 中,模板(template) 是一个预定义的索引配置,允许用户为未来的索引指定默认的映射、设置和别名。通过设置模板,用户能够确保所有符合特定模式的索引在创建时遵循相同的配置。

索引模板通常包含以下几部分内容:

  • 映射(Mapping):定义字段的数据类型、分词器等信息。

  • 设置(Settings):定义索引的配置参数,如分片数、副本数等。

  • 别名(Aliases):为索引创建别名,方便管理和查询。


如何设置 Elasticsearch 模板?



1. 创建一个简单的索引模板


可以使用以下命令来创建一个新的索引模板:

    PUT _template/template_1
    {
     "index_patterns": ["log-*"],
     "settings": {
       "number_of_shards": 3,
       "number_of_replicas": 2
     },
     "mappings": {
       "properties": {
         "timestamp": {
           "type": "date"
         },
         "message": {
           "type": "text"
         }
       }
     }
    }
    • index_patterns:定义了匹配模板的索引模式,这里 log-* 表示所有以 log- 开头的索引将使用此模板。

    • settings:设置索引的参数,如分片数和副本数。

    • mappings:定义索引字段的类型和分析器,这里设置了 timestamp 字段为日期类型,message 字段为文本类型。


    2. 使用模板创建新的索引


    当模板配置好之后,所有符合匹配模式(log-*)的索引在创建时会自动应用该模板。你可以直接创建一个新的索引来查看模板的效果:

      PUT /log-2024-12-20

      这时,log-2024-12-20 索引会自动继承模板中的设置和映射。


      新版 _index_template 与旧版 _template 的区别



      随着 Elasticsearch 7.x 和 8.x 版本的发布,模板功能经历了一些重要的改进和变化。具体来说,_index_template 和 _template 在功能上有明显的区别。


      1. 旧版 _template


      在 Elasticsearch 7.x 之前,使用的是 _template 来定义索引模板。模板的创建和更新依赖于该 API,通常通过如下方式进行设置:

        PUT /_template/template_1
        {
         "index_patterns": ["log-*"],
         "settings": { ... },
         "mappings": { ... }
        }

        特点:

        • 支持模板应用到多个索引,但模板的匹配是基于 index_patterns,如果索引匹配多个模板,系统会按顺序合并它们的设置。

        • 不支持优先级配置,导致如果多个模板匹配相同的索引,最终的行为可能不符合预期。

        • 配置较为简单,适用于小规模的应用场景。


        2. 新版 _index_template


        在 Elasticsearch 7.x 之后,_index_template 逐步取代了 _template。新版模板 API 引入了更多的灵活性和控制,尤其是对于模板的优先级、版本控制等方面。

          PUT /_index_template/template_1
          {
           "index_patterns": ["log-*"],
           "priority": 100,
           "template": {
             "settings": { ... },
             "mappings": { ... }
           }
          }

          新版 _index_template 的优势:

          • 优先级(priority)可以为每个模板设置优先级,优先级高的模板会覆盖优先级低的模板。这一特性在多个模板匹配同一个索引时尤为重要。

          • 模板版本控制:可以为每个模板指定版本,从而进行更好的版本管理和回滚。

          • 模板类型:支持复杂的模板定义,可以包含多个 template,例如通过 composed_of 将多个模板组合成一个新模板。

          • 更多的动态和静态配置选项:新版模板支持更多的字段和参数,可以更精细地控制索引的行为。


          3. _template 和 _index_template 的对比



          如何迁移到新版模板? 



          如果你正在使用旧版模板(_template),建议尽早迁移到新版模板(_index_template),以便利用新版的灵活性和控制。迁移步骤通常包括:

          1. 创建一个新的 _index_template。

          2. 配置新模板的优先级和版本控制。

          3. 将现有的模板配置迁移到新的模板结构中。

          4. 测试新模板在索引创建时的行为,确保不会引发配置冲突。

          5. 在生产环境中逐步替换旧模板。


          关于公司

          感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。


          欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!

          Elastic 微信群

          EDB 微信群


          发现“分享”“赞”了吗,戳我看看吧


          文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论