《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.8.Index template(1) https://developer.aliyun.com/article/1230801
新版本:
删除了 order 关键字,引入了组件模板 Component template 的概念,是第一段可以复用的配置块。在创建普通模板时可以声明引用多个组件模板,当创建索引匹配到多个新版索引模板时,取用最高权重的那个。
下面将以生命周期(创建、查看、使用、删除)为切入点,分别介绍如何使用 Elasticsearch 新老两个版本的索引模板。
新版索引模板
在使用新版本的索引模板功能前,我们应当确认 Elasticsearch 是否开启了安全设置,如果是,那么我们操作的角色对于集群需要有 manage_index_templates 或 manage 权限才能使用索引模板功能,这个限制对新老版本都适用。
对于新版,Elasticsearch 为了方便用户调试,提供了模拟 API 来帮助用户测试创建索引最终的配置。该模拟 API 主要有 2 个。
第一个模拟在现有索引模板下创建 1 个索引,最终使用的模板配置是什么样的。
第二个模拟在指定模板的配置下,最终模板配置是什么样的。
第一种模拟 API 使用范例如下:
# 创建1个组件模板ct1 PUT /_component_template/ct1 # 1 { "template": { "settings": { "index.number_of_shards": 2 } } } # 创建1个组件模板ct2 PUT /_component_template/ct2 # 2 { "template": { "settings": { "index.number_of_replicas": 0 }, "mappings": { "properties": { "@timestamp": { "type": "date" } } } } } # 创建1个索引模板 final-template PUT /_index_template/final-template # 3 { "index_patterns": ["my-index-*"], "composed_of": ["ct1", "ct2"], "priority": 5, "template":{ "settings": { "index.number_of_replicas": 1 }, "mappings": { "properties": { "name": { "type": "keyword" } } } } } # 验证创建名为 my-index-00000 的索引使用的配置是如何 POST /_index_template/_simulate_index/my-index-00000 # 4 #返回 { "template" : { # 引用模板中的配置有settings、mappings、aliase "settings" : { "index" : { "number_of_shards" : "2", "number_of_replicas" : "1" } }, "mappings" : { "properties" : { "@timestamp" : { "type" : "date" }, "name" : { "type" : "keyword" } } }, "aliases" : { } }, "overlapping" : [ # 5 { "name" : "test-template", "index_patterns" : ["my-*"] } ] }
1、在 #1 处创建了 1 个名为cr1的组件模板,该模板设置了索引分片数为2。
2、在 #2 处创建了 1 个名为cr2的组件模板,该模板设置了索引由1个@timestamp属性,并且副本数是0。
3、在 #3 处创建了1个名为final-template的索引模板,它适用于所有以my-index-开头的索引。
4、在 #4 处向/_index_template/_simulate_index/my-index-00000发送 POST 请求,测试创建名为my-index-00000的索引,下面的 JSON 是使用索引模板的配置,可以看出 template 字段是组件 cr1、cr2 以及索引模板 final-template 全部配置的聚合。
5、#5处的overlapping字段表示忽略了名为test-template模板的配置。
第二种模拟 API 使用范例如下:
# 默认组件模板 ct1、crt 已创建,内容如前 # 验证按照该模板创建的索引时会使用的配置 POST /_index_template/_simulate/<index-template> #1 { # 2 "index_patterns":["test-*"], "composed_of": ["ct1","ct2"], "priority": 5, "template": { "settings": { "index.number_of_replicas": 1 }, "mappings": { "properties": { "name": { "type": "keyword" } } } } } # 返回 { # 3 "template" : { "settings" : { "index" : { "number_of_shards" : "2", "number_of_replicas" : "1" } }, "mappings" : { "properties" : { "@timestamp" : { "type" : "date" }, "name" : { "type" : "keyword" } } }, "aliases" : { } }, "overlapping" : [ { "name" : "test-template", "index_patterns" : ["my-*"] } ] }
1、#1 向/_index_template/_simulate/发送 POST 请求,其中为自定义索引模板的名词,该模板并不会实际创建。
2、#2 处是请求的 body,与创建一个新版索引模板个格式完全一样,后续详细介绍,目前只需要知道它引用了 cr1 和 cr2 两个组件模板。
3、#3 处为请求返回的 body,可以看出内容是组件模板 cr1、cr2 以及请求 body3 个配置的组合。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.8.Index template(3) https://developer.aliyun.com/article/1230799