
点击蓝字关注我们
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),以便利用新版的灵活性和控制。迁移步骤通常包括:
创建一个新的 _index_template。
配置新模板的优先级和版本控制。
将现有的模板配置迁移到新的模板结构中。
测试新模板在索引创建时的行为,确保不会引发配置冲突。
在生产环境中逐步替换旧模板。
关于公司
感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。
欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!
![]() | ![]() |
Elastic 微信群 | EDB 微信群 |

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






