如何测试新的索引功能编辑

Elasticsearch 一直在添加新的索引模式和功能,以优化存储大小和查询性能。

我们希望让集成开发者能够开始测试启用这些功能的摄取和查询性能,然后再开始对集成本身进行任何更改,或者允许最终用户从 Fleet UI 启用这些功能。

目前,可以通过利用 Fleet 为每个集成数据流安装的 *@custom 组件模板来启用这些功能,使用方便程度各不相同(详情见下文)。我们可以通过在 Fleet 中添加一个显式 API 来改进集成开发人员对此的 UX,但这可能并非必要。有关如何添加功能标志 API 以简化此操作的讨论,请参见 elastic/kibana#132818

请参见以下说明以测试新的索引功能

测试合成源编辑

  • 有关背景信息,请参考 #85649
  • 有关集成支持,请参考 #340

此功能很容易在使用组件模板的集成上启用。例如,以下是如何为 nginx 子状态指标执行此操作

  1. 安装 nginx 包。
  2. 运行此 dev tools 命令

    PUT /_component_template/metrics-nginx.substatus@custom
    {
      "template": {
        "settings": {},
        "mappings": {
          "_source": {
            "mode": "synthetic"
          }
        }
      },
      "_meta": {
        "package": {
          "name": "nginx"
        }
      }
    }
  3. 如果数据流已存在,请将数据流回滚以获取新的映射:POST metrics-nginx.substatus-default/_rollover

利用合成源的一个挑战是它不支持配置了 ignore_above 的关键字字段。可能值得删除这些字段上的此设置以进行测试。可以通过在 dev 中编辑包并通过 elastic-package 安装它或通过自定义组件模板覆盖它来完成此操作,类似于 doc-value-only 示例。

测试 doc-value-only 字段编辑

此功能在组件模板中更具挑战性,因为它需要为每个 long 和 double 字段添加 index: false。在 Fleet 中提供 API 将使此操作更容易。以下是如何手动执行此操作

  1. 安装 nginx 包。
  2. 获取包中包含的映射:GET /_component_template/logs-nginx.access@package
  3. 将输出复制到您喜欢的文本编辑器中,搜索每个 "type": "long""type": "double",然后添加 "index": false
  4. 使用新的映射更新自定义组件模板。例如,以下是如何将 long 字段设置为 index: false

    PUT /_component_template/merics-nginx.substatus@custom
    {
      "template": {
        "settings": {},
        "mappings": {
          "properties": {
            "nginx": {
              "properties": {
                "stubstatus": {
                  "properties": {
                    "hostname": {
                      "ignore_above": 1024,
                      "type": "keyword"
                    },
                    "current": {
                      "type": "long",
                      "index": false
                    },
                    "waiting": {
                      "type": "long",
                      "index": false
                    },
                    "accepts": {
                      "type": "long",
                      "index": false
                    },
                    "handled": {
                      "type": "long",
                      "index": false
                    },
                    "writing": {
                      "type": "long",
                      "index": false
                    },
                    "dropped": {
                      "type": "long",
                      "index": false
                    },
                    "active": {
                      "type": "long",
                      "index": false
                    },
                    "reading": {
                      "type": "long",
                      "index": false
                    },
                    "requests": {
                      "type": "long",
                      "index": false
                    }
                  }
                }
              }
            }
          }
        }
      },
      "_meta": {
        "package": {
          "name": "nginx"
        }
      }
    }
  5. 如果数据流已存在,请将数据流回滚以获取新的映射:POST metrics-nginx.substatus-default/_rollover

时间序列索引 (TSDS)编辑

  • 有关背景信息,请参考 #74660
  • 有关集成支持,请参考 #311

使用 TSDS 索引需要以下内容

  • 必须为适当字段添加 time_series_dimensiontime_series_metric 的映射参数。包生态系统和 Fleet 已支持此功能,因此包可以预先定义这些选项。
  • 必须添加 mode: time_seriesrouting_path 索引设置,可以通过编辑自定义组件模板来完成此操作。

请注意,routing_path 设置应与指定了 time_series_dimension 的字段相对应。将来,ES 可能会自动执行此设置。

  1. 安装 kubernetes 包(已设置 TSDS 映射)
  2. 运行此 dev tools 命令

    PUT /_component_template/metrics-kubernetes.pod@custom
    {
      "template": {
        "settings": {
          "index.mode": "time_series",
          "index.routing_path": ["kubernetes.pod.uid"]
        },
        "mappings": {}
      },
      "_meta": {
        "package": {
          "name": "kubernetes"
        }
      }
    }
  3. 如果数据流已存在,请将数据流回滚以获取新的映射:POST metrics-kubernetes.pod-default/_rollover