在Elasticsearch中,索引模板用于定义一组索引的配置,当新的索引被创建时,如果索引名称符合模板定义的模式(index pattern),那么该模板中的设置将自动应用于新创建的索引。索引模板可以预先定义索引的分片数量、副本数量、映射(mapping)和设置(settings)等信息。以下是如何创建和使用索引模板的步骤:
创建索引模板
PUT /_index_template/template_1
{
"index_patterns": ["logs-*"], // 匹配索引名称模式
"template": {
"settings": {
"number_of_shards": 5, // 设置索引分片数量
"number_of_replicas": 1, // 设置副本数量
"refresh_interval": "5s" // 设置索引刷新间隔
},
"mappings": {
"properties": {
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
},
"message": {
"type": "text",
"analyzer": "standard"
}
}
},
"aliases": {
"all_logs": {} // 创建索引别名
}
},
"priority": 1, // 模板优先级,数值越大优先级越高
"version": 1 // 模板版本,便于后期升级和管理
}
使用索引模板
当新创建一个符合索引模板中定义的index_patterns
的索引时,模板中的设置和映射会自动应用到新索引上。例如,如果创建了一个名为logs-2022-03-28
的索引,由于其名称符合模板logs-*
的模式,因此索引的设置和映射将按照template_1
中定义的内容进行初始化。
示例:创建索引并观察模板应用效果
# 创建符合模板的索引
PUT logs-2022-03-28/_doc/1
{
"timestamp": "2022-03-28 12:00:00.000",
"message": "This is a test log message."
}
# 验证索引的映射和设置是否按模板配置
GET logs-2022-03-28
# 验证索引是否关联了模板定义的别名
GET /_alias/all_logs
注意事项:
- 索引模板的匹配顺序取决于它们的优先级(priority),优先级高的模板会在优先级低的模板之前应用。
- 如果多个模板匹配到同一个索引,Elasticsearch会按照优先级和创建时间决定最终应用哪个模板。
- 索引模板可以在任何时候创建、更新或删除,但已创建的索引不受模板后续改动的影响。如果需要更改现有索引的配置,需要直接对索引进行相应操作。