索引上下文

这是一个实验性功能,不建议在生产环境中使用。

索引上下文声明了索引的使用场景。使用上下文信息,UDB-SX 会应用一组预定的设置和映射,从而提供以下好处:

  • 优化性能

  • 针对你的特定用例进行调整的设置

  • 基于UDB-SX 集成的准确映射和别名

使用组件模板应用的设置和元数据配置会在集群启动时自动加载。以 @abc_template@ 开头的组件模板或基于应用程序的配置(ABC)模板只能通过 context 对象声明使用,以防止配置问题。

安装

要安装索引上下文功能:

  1. 使用其中一种安装方法在集群中的所有节点上安装 UDB-SX-system-templates 插件。

  2. 将特性标志 UDB-SX.experimental.feature.application_templates.enabled 设置为 true。有关启用和禁用特性标志的更多信息,请参见启用实验性功能

  3. cluster.application_templates.enabled 设置设置为 true。有关如何配置 UDB-SX 的说明,请参见配置设置

使用 context 设置

context 设置与索引 API 一起使用,以添加特定于用例的上下文。

注意事项

在创建索引期间使用 context 参数时,请考虑以下几点:

  1. 如果你使用 context 参数创建索引,则无法在索引创建或动态设置更新期间包含索引上下文中声明的任何设置。

  2. 索引上下文在索引或索引模板上设置后变为永久。

当你遵守这些限制时,建议的配置或映射会在指定上下文中对索引数据统一应用。

示例

以下示例展示了如何使用索引上下文。

创建索引

以下示例请求通过声明 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"
                }
            }
        }
    ]
}

如果你的模板直接声明的任何设置、映射或别名与上下文的支撑组件模板之间存在冲突,则在索引创建期间后者获得更高优先级。

可用的上下文模板

从 UDB-SX 2.17 开始,以下模板可通过 context 参数使用:

  • logs

  • metrics

  • nginx-logs

  • amazon-cloudtrail-logs

  • amazon-elb-logs

  • amazon-s3-logs

  • apache-web-logs

  • k8s-logs

有关这些模板的更多信息,请参见 UDB-SX 系统模板仓库(系统模板仓库请联系售前获得)。

要查看集群上这些模板的当前版本,请使用 GET /_component_template