《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.8.Index template(7) https://developer.aliyun.com/article/1230794
删除
老版本的索引模板完成使命后,应该及时将其删除,避免创建索引时匹配到不必要的模板,导致最终创建的索引与预期不符。删除操作非常简单,发送 delete 请求即可,删除同样可以使用通配符*一次删除多个,示例如下:
DELETE /_template/old_template_1?master_timeout=30s&timeout=30s #1
DELETE /_template/old_template* #2
1、#1 表示删除名为old_template_1的索引模板。
2、#2 表示删除名字以old_template开头的索引模板。
如 #1 所示,上述 2 个请求都可以增加 2 个可选的查询参数。
1、timeout,表示可以容忍的等待响应时间,默认是 30s,如果超时则请求报错。
2、master_timeout,表示可以容忍的连接elasticsearch主节点的时间,默认是 30s,如果超时则请求报错。
注意事项及技巧
目前新老版本的索引模板在7.10版本都可以使用,并且都是通过名称匹配的方式,来决定最后使用的配置,那么在使用的过程中难免会遇到,匹配到多个模板且配置有冲突的情况。下面总结几点规则来介绍,创建索引的最终配置是如何决定的。
l 如果同时匹配到新老 2 个版本的索引模板,那么使用新版模板。
l 如果仅匹配到多个新版模板,那么使用priority值最高的索引模板。
l 如果新版模板中配置了多个组件模板,且组件中有配置冲突,那么使用composed_of数组中靠后的组件模板的配置。
l 如果组件模板和索引模板有字段冲突,那么使用索引模板中的配置。
l 如果仅匹配到多个老版模板,那么最终配置由多个模板共同构成,如果有配置冲突,使用
l order值高的模板的配置。
l 如果创建索引语句中的配置与索引模板(不管新老版本)冲突,那么使用创建语句中的配置。
索引模板一般和动态映射结合使用,这样可以大大减少创建索引的语句,缩减索引创建频次。配置方式是在mappings字段中配置dynamic_templates的相关内容。
这个功能一般用于创建时序类数据的索引,比如日志数据,每天都会有新数据进入索引,数据量会持续增加,只用一个索引肯定不合适,需要按日或按月创建。
这种情况约定录入数据的索引名称与日期相关,再创建索引模板,这样数据持续录入时,索引也会按需增加,且不用人工干预,后期对不同索引还能做冷热处理。
创作人简介:
骆潇龙,高级 Java 开发工程师,关注大数据技术领域。