创建或更新组件模板
您可以使用组件模板 API 创建或更新组件模板。组件模板是可重用的构建块,它定义了可以在多个索引模板之间共享的设置、映射和别名。
索引模板可以使用多个组件模板构建。要将组件模板合并到索引模板中,您需要将其列在索引模板的 composed_of
部分。组件模板仅应用于与索引模板中指定条件匹配的新创建数据流和索引。
如果任何设置或映射直接在索引模板或索引创建请求中定义,则这些设置将优先于组件模板中指定的设置或映射。
组件模板仅在索引创建过程中使用。对于数据流,这包括数据流本身的创建以及支持该数据流的后台索引的创建。对组件模板所做的修改不会影响现有索引,包括数据流的后台索引。
端点
PUT 方法添加组件模板并接受查询参数和请求正文。GET 方法检索有关现有组件模板的信息,并且只接受查询参数。
PUT _component_template/<component-template-name>
GET _component_template/<component-template-name>
路径参数
参数 | 数据类型 | 描述 |
---|---|---|
component-template-name | 字符串 | 组件模板的名称。 |
查询参数
支持以下可选查询参数。
参数 | 数据类型 | 描述 |
---|---|---|
create | 布尔型 | 当为 true 时,API 无法替换或更新任何现有索引模板。默认值为 false 。 |
cluster_manager_timeout | 时间 | 等待连接到集群管理器节点的时间量。默认值为 30s 。 |
timeout | 时间 | 操作等待响应的时间量。默认值为 30s 。 |
请求正文字段
以下选项可在请求正文中使用,用于自定义索引模板。
参数 | 数据类型 | 描述 |
---|---|---|
template | 对象 | 包含索引的 aliases 、mappings 或 settings 的模板。欲了解更多信息,请参阅 [#template]。必填。 |
version | 整数 | 用于管理索引模板的版本号。版本号不会由 OpenSearch 自动设置。可选。 |
_meta | 对象 | 提供索引模板详细信息的元数据。可选。 |
allow_auto_create | 布尔型 | 当为 true 时,即使禁用了 actions.auto_create_index ,也可以使用此模板自动创建索引。当为 false 时,与模板匹配的索引和数据流无法自动创建。可选。 |
deprecated | 布尔型 | 当为 true 时,组件模板已弃用。如果已弃用,OpenSearch 在引用该模板时将输出警告。 |
模板
您可以在请求正文中使用 template
选项和以下对象。
alias
要与模板关联的别名名称作为键。当请求正文中存在 template
选项时必填。此选项支持多个别名。
对象正文包含以下可选别名参数。
参数 | 数据类型 | 描述 |
---|---|---|
filter | 查询 DSL 对象 | 限制别名可访问文档数量的查询。 |
index_routing | 字符串 | 将索引操作路由到特定分片的值。指定后,将覆盖索引操作的 routing 值。 |
is_hidden | 布尔型 | 当为 true 时,别名被隐藏。默认值为 false。所有别名索引的此设置都必须具有匹配的值。 |
is_write_index | 布尔型 | 当为 true 时,该索引是此别名的写入索引。默认值为 false 。 |
路由 | 字符串 | 用于将索引和搜索操作路由到特定分片的值。 |
search_routing | 字符串 | 用于将搜索操作写入特定分片的值。指定后,此选项将覆盖搜索操作的 routing 值。 |
mappings
索引中存在的字段映射。欲了解更多信息,请参阅 映射和字段类型。可选。
settings
索引的任何配置选项。欲了解更多信息,请参阅 索引设置。
示例请求
以下示例请求展示了如何使用组件模板 API。
使用索引别名创建
以下示例请求创建一个包含索引别名的组件模板。
PUT _component_template/alias_template
{
"template": {
"settings" : {
"number_of_shards" : 1
},
"aliases" : {
"alias1" : {},
"alias2" : {
"filter" : {
"term" : {"user.id" : "hamlet" }
},
"routing" : "shard-1"
},
"{index}-alias" : {}
}
}
}
添加组件版本控制
以下示例向组件模板添加 version
号,这简化了外部系统的模板管理。
PUT /_component_template/version_template
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"version": 3
}
添加模板元数据
以下示例请求使用 meta
参数向索引模板添加元数据。所有元数据都存储在集群状态中。
PUT /_component_template/meta_template
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"_meta": {
"description": "Where art thou",
"serialization": {
"class": "MyIndexTemplate",
"id": 12
}
}
}