如何测试新的索引功能
编辑如何测试新的索引功能
编辑Elasticsearch 一直在添加新的索引模式和功能,这些功能可以优化存储大小和查询性能。
我们希望让集成开发人员能够在对集成本身进行任何更改或允许最终用户从 Fleet UI 中启用这些功能之前,开始测试启用这些功能的摄取和查询性能。
目前,可以通过利用 Fleet 为每个集成数据流安装的*@custom
组件模板来启用这些功能,其易用性各不相同(详细信息如下)。我们可以通过在 Fleet 中添加一个明确的 API 来启用此功能,从而改善集成开发人员的 UX,但这可能不是必需的。有关如何添加功能标志 API 以简化此操作的讨论,请参阅elastic/kibana#132818。
请参阅以下说明,了解如何测试新的索引功能
测试合成源
编辑此功能非常易于在使用组件模板的集成上启用。例如,以下是如何为nginx
子状态指标执行此操作
- 安装 nginx 包。
-
运行此开发工具命令
PUT /_component_template/metrics-nginx.substatus@custom { "template": { "settings": {}, "mappings": { "_source": { "mode": "synthetic" } } }, "_meta": { "package": { "name": "nginx" } } }
- 如果数据流已存在,请翻转数据流以获取新的映射:
POST metrics-nginx.substatus-default/_rollover
利用合成源的一个挑战是它不支持配置了ignore_above
的关键字字段。对于这些字段的测试,可能值得删除此设置。这可以通过在dev
中编辑包并通过elastic-package
安装它或通过自定义组件模板覆盖它来完成,类似于doc-value-only
示例。
测试doc-value-only
字段
编辑- 有关背景信息,请参阅Elasticsearch、Kibana 和 Elastic Cloud 8.1:更快的索引、更少的磁盘存储和更智能的分析功能。
- 有关集成支持,请参阅#3419。
此功能在组件模板中更具挑战性,因为它需要为每个长字段和双精度字段添加index: false
。在 Fleet 中提供 API 将使此操作变得更容易。以下是如何手动执行此操作
- 安装
nginx
包。 - 获取包中包含的映射:
GET /_component_template/logs-nginx.access@package
。 - 将输出复制到您喜欢的文本编辑器中,搜索每个
"type": "long"
和"type": "double"
,并添加"index": false
。 -
使用新映射更新自定义组件模板。例如,以下是如何将长字段设置为
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" } } }
- 如果数据流已存在,请翻转数据流以获取新的映射:
POST metrics-nginx.substatus-default/_rollover
时间序列索引 (TSDS)
编辑使用 TSDS 索引需要以下内容
- 必须为相应字段添加
time_series_dimension
和time_series_metric
的映射参数。包生态系统和 Fleet 已经支持这一点,因此包已经可以定义这些选项。 - 必须添加
mode: time_series
和routing_path
索引设置,这可以通过编辑自定义组件模板来完成。
请注意,routing_path
设置应与指定了time_series_dimension
的字段相对应。将来,ES 可能会自动执行此设置。
- 安装 Kubernetes 包(已设置 TSDS 映射)
-
运行此开发工具命令
PUT /_component_template/metrics-kubernetes.pod@custom { "template": { "settings": { "index.mode": "time_series", "index.routing_path": ["kubernetes.pod.uid"] }, "mappings": {} }, "_meta": { "package": { "name": "kubernetes" } } }
- 如果数据流已存在,请翻转数据流以获取新的映射:
POST metrics-kubernetes.pod-default/_rollover