正在加载

如何测试新的索引功能

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

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

目前,通过利用 Fleet 为每个集成数据流安装的 `*@custom` 组件模板,已经可以启用这些功能,但易用性各不相同(详见下文)。 我们可以通过在 Fleet 中添加显式 API 来改进集成开发者在此方面的用户体验,但这可能不是必需的。 有关如何添加功能标志 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` 示例。

此功能在使用组件模板时更具挑战性,因为它需要在每个 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`

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

使用 TSDS 索引需要以下内容

  • 必须在适当的字段上为 `time_series_dimension` 和 `time_series_metric` 添加映射参数。 程序包生态系统和 Fleet 已经支持此功能,因此程序包已经可以定义这些选项。
  • 必须添加 `mode: time_series` 和 `routing_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`

© . All rights reserved.