索引上下文
这是一个实验性功能,不建议在生产环境中使用。如需了解此功能的最新进展或提供反馈,请加入 OpenSearch 论坛的讨论。
索引上下文声明了索引的用例。使用上下文信息,OpenSearch 会应用一组预设的设置和映射,这提供了以下好处
- 优化性能
- 针对您的特定用例调整的设置
- 基于 OpenSearch 集成的准确映射和别名
使用组件模板应用的设置和元数据配置会在集群启动时自动加载。以 @abc_template@
或基于应用程序的配置(ABC)模板开头的组件模板只能通过 context
对象声明使用,以防止配置问题。
安装
要安装索引上下文功能
-
使用 安装方法之一在集群的所有节点上安装
opensearch-system-templates
插件。 -
将功能标志
opensearch.experimental.feature.application_templates.enabled
设置为true
。有关启用和禁用功能标志的更多信息,请参阅启用实验性功能。 -
将
cluster.application_templates.enabled
设置设为true
。有关如何配置 OpenSearch 的说明,请参阅配置设置。
使用 context
设置
使用索引 API 的 context
设置来添加特定于用例的上下文。
注意事项
在索引创建期间使用 context
参数时,请考虑以下事项
- 如果您使用
context
参数创建索引,则在索引创建或动态设置更新期间,不能包含索引上下文中声明的任何设置。 - 索引上下文在索引或索引模板上设置后将变为永久性。
当您遵守这些限制时,建议的配置或映射会统一应用于指定上下文中的索引数据。
示例
以下示例展示了如何使用索引上下文。
创建索引
以下示例请求通过将 metrics
映射声明为上下文来创建一个用于存储指标数据的索引
PUT /my-metrics-index
{
"context": {
"name": "metrics"
}
}
创建后,上下文将添加到索引中并应用相应的设置
GET 请求
GET /my-metrics-index
响应
{
"my-metrics-index": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"codec": "zstd_no_dict",
"refresh_interval": "60s",
"number_of_shards": "1",
"provided_name": "my-metrics-index",
"merge": {
"policy": "log_byte_size"
},
"context": {
"created_version": "1",
"current_version": "1"
},
...
}
},
"context": {
"name": "metrics",
"version": "_latest"
}
}
}
创建索引模板
您还可以在创建索引模板时使用 context
参数。以下示例请求创建一个索引模板,其上下文信息为 logs
PUT _index_template/my-logs
{
"context": {
"name": "logs",
"version": "1"
},
"index_patterns": [
"my-logs-*"
]
}
使用此索引模板创建的所有索引都将获取相关联的组件模板提供的元数据。以下请求和响应展示了 context
是如何添加到模板中的
获取索引模板
GET _index_template/my-logs
响应
{
"index_templates": [
{
"name": "my-logs2",
"index_template": {
"index_patterns": [
"my-logs1-*"
],
"context": {
"name": "logs",
"version": "1"
}
}
}
]
}
如果您的模板直接声明的任何设置、映射或别名与上下文的后备组件模板之间存在任何冲突,则后者在索引创建期间具有更高的优先级。
可用上下文模板
以下模板可通过 OpenSearch 2.17 的 context
参数使用
logs
metrics
nginx-logs
amazon-cloudtrail-logs
amazon-elb-logs
amazon-s3-logs
apache-web-logs
k8s-logs
有关这些模板的更多信息,请参阅 OpenSearch 系统模板仓库。
要查看集群上这些模板的当前版本,请使用 GET /_component_template
。