如何测试新的索引功能

编辑

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

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

目前,可以通过利用 Fleet 为每个集成数据流安装的*@custom组件模板来启用这些功能,其易用性各不相同(详细信息如下)。我们可以通过在 Fleet 中添加一个明确的 API 来启用此功能,从而改善集成开发人员的 UX,但这可能不是必需的。有关如何添加功能标志 API 以简化此操作的讨论,请参阅elastic/kibana#132818

请参阅以下说明,了解如何测试新的索引功能

测试合成源

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

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

  1. 安装 nginx 包。
  2. 运行此开发工具命令

    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字段

编辑

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

  1. 安装nginx包。
  2. 获取包中包含的映射:GET /_component_template/logs-nginx.access@package
  3. 将输出复制到您喜欢的文本编辑器中,搜索每个"type": "long""type": "double",并添加"index": false
  4. 使用新映射更新自定义组件模板。例如,以下是如何将长字段设置为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. 运行此开发工具命令

    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