创建、获取、删除传统索引模板(Legacy Index Templates)。
API #
POST /_template/{name}
PUT /_template/{name}
GET /_template
GET /_template/{name}
DELETE /_template/{name}
API 的作用 #
传统索引模板允许您定义在创建新索引时自动应用的设置、映射和别名。
注意:传统模板(
/_template)是旧版本 API。推荐使用可组合索引模板(/_index_template)和组件模板(/_component_template)。
传统模板 vs 可组合模板 #
| 特性 | 传统模板 | 可组合模板 |
|---|---|---|
| API 路径 | /_template | /_index_template |
| 模块化 | 否 | 是,可使用组件模板 |
| 优先级 | order | priority |
| 组合性 | 不支持 | 支持多个模板组合 |
| 推荐度 | 已弃用 | 推荐 |
API 的参数 #
创建/更新传统模板 #
路由参数 #
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
{name} | 字符串 | 必需 | 模板名称 |
Query String 参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
cause | 字符串 | 否 | "" | 创建模板的原因 |
create | 布尔值 | 否 | false | 是否只创建新模板(不允许覆盖) |
include_type_name | 布尔值 | 否 | false | 是否在请求体中包含类型名称(已弃用) |
master_timeout | 时间值 | 否 | 30s | 连接到主节点的超时时间 |
order | 整数 | 否 | 0 | 模板的优先级顺序 |
请求体参数 #
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
index_patterns | 数组 | 必需 | 索引模式列表(如 ["logs-*", "metrics-*"]) |
order | 整数 | 否 | 模板优先级,数值越小优先级越高 |
version | 整数 | 否 | 模板版本号 |
settings | 对象 | 否 | 索引设置配置 |
mappings | 对象 | 否 | 字段映射定义 |
aliases | 对象 | 否 | 索引别名配置 |
获取传统模板 #
路由参数 #
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
{name} | 字符串 | 否 | 模板名称,支持逗号分隔的多个名称。不指定则获取所有模板 |
Query String 参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
flat_settings | 布尔值 | 否 | false | 是否以扁平格式返回设置 |
include_type_name | 布尔值 | 否 | false | 是否在响应中包含类型名称(已弃用) |
local | 布尔值 | 否 | false | 是否只从本地节点获取信息 |
master_timeout | 时间值 | 否 | 30s | 连接到主节点的超时时间 |
删除传统模板 #
路由参数 #
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
{name} | 字符串 | 必需 | 要删除的模板名称 |
Query String 参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
master_timeout | 时间值 | 否 | 30s | 连接到主节点的超时时间 |
timeout | 时间值 | 否 | 默认超时 | 操作超时时间 |
示例 #
创建传统模板 #
PUT /_template/logs_template
{
"index_patterns": ["logs-*"],
"order": 1,
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"message": { "type": "text" },
"level": { "type": "keyword" }
}
},
"aliases": {
"logs_all": {}
}
}
响应示例:
{
"acknowledged": true
}
只创建不更新 #
PUT /_template/logs_template?create=true
{
"index_patterns": ["logs-*"],
"settings": { ... }
}
设置优先级(order) #
PUT /_template/default_template
{
"index_patterns": ["*"],
"order": 0,
"settings": {
"number_of_replicas": 0
}
}
PUT /_template/prod_template
{
"index_patterns": ["prod-*"],
"order": 10,
"settings": {
"number_of_replicas": 2
}
}
获取所有模板 #
GET /_template
响应示例:
{
"logs_template": {
"index_patterns": ["logs-*"],
"order": 1,
"settings": { ... },
"mappings": { ... },
"aliases": { ... }
}
}
获取特定模板 #
GET /_template/logs_template
获取多个模板 #
GET /_template/logs_template,metrics_template
以扁平格式获取 #
GET /_template/logs_template?flat_settings=true
删除模板 #
DELETE /_template/logs_template
响应示例:
{
"acknowledged": true
}
使用 template 参数(向后兼容) #
PUT /_template/old_template
{
"template": "logs-*",
"settings": { ... }
}
注意:
template参数已被index_patterns替代。
模板优先级(order) #
当多个模板匹配同一个索引时:
- 按
order值升序应用(数值越小优先级越高) - 相同 order 时按模板名称字典序
- 后应用的模板设置会覆盖先应用的
| order 值 | 应用顺序 |
|---|---|
| 0 | 最后应用 |
| 10 | 优先应用 |
| 100 | 最先应用 |
迁移到可组合模板 #
传统模板可以迁移到可组合模板:
# 传统模板
PUT /_template/logs
{
"index_patterns": ["logs-*"],
"settings": { ... },
"mappings": { ... }
}
# 等效的可组合模板
# 1. 创建组件模板
PUT /_component_template/logs_settings
{
"template": {
"settings": { ... }
}
}
# 2. 创建索引模板
PUT /_index_template/logs
{
"index_patterns": ["logs-*"],
"priority": 100,
"template": {
"mappings": { ... }
}
}
使用场景 #
场景 1:时间序列索引 #
PUT /_template/daily_logs
{
"index_patterns": ["logs-[YYYY.MM.DD]"],
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1,
"index.format": "yyyy.MM.dd"
}
}
场景 2:环境分离 #
# 开发环境
PUT /_template/dev_logs
{
"index_patterns": ["logs-dev-*"],
"order": 5,
"settings": {
"number_of_replicas": 0
}
}
# 生产环境
PUT /_template/prod_logs
{
"index_patterns": ["logs-prod-*"],
"order": 10,
"settings": {
"number_of_replicas": 2
}
}
注意事项 #
- 已弃用:传统模板 API 已被标记为弃用,推荐使用可组合模板
- 不可组合:不能像组件模板那样组合使用
- 版本控制:版本控制不如可组合模板灵活
- 全局限制:全局模板(
*模式)不能设置某些隐藏设置 - 迁移建议:新项目推荐使用可组合模板和组件模板





