配置忽略缺失的组件模板

edit

配置 ignore_missing_component_templates

edit

配置选项 ignore_missing_component_templates 可以在索引模板引用可能不存在的组件模板时使用。每次基于索引模板创建数据流时,都会检查组件模板的存在性。如果存在,它将用于形成索引的复合设置。如果不存在,则忽略它。

使用示例

edit

在下面,创建了一个组件模板和一个索引模板。索引模板引用了两个组件模板,但只有@package这个存在。

创建组件模板 logs-foo_component1。这必须在索引模板之前创建,因为它不是可选的:

PUT _component_template/logs-foo_component1
{
  "template": {
    "mappings": {
      "properties": {
        "host.name": {
          "type": "keyword"
        }
      }
    }
  }
}

接下来,将创建索引模板,并引用两个组件模板:

  "composed_of": ["logs-foo_component1", "logs-foo_component2"]

之前,仅创建了 logs-foo_component1 组件模板,这意味着 logs-foo_component2 缺失。因此,以下条目被添加到配置中:

  "ignore_missing_component_templates": ["logs-foo_component2"],

在创建模板时,它不会验证 logs-foo_component2 是否存在:

PUT _index_template/logs-foo
{
  "index_patterns": ["logs-foo-*"],
  "data_stream": { },
  "composed_of": ["logs-foo_component1", "logs-foo_component2"],
  "ignore_missing_component_templates": ["logs-foo_component2"],
  "priority": 500
}

索引模板 logs-foo 已成功创建。可以基于此模板创建数据流:

PUT _data_stream/logs-foo-bar

查看数据流的映射,它将包含host.name字段。

在稍后的阶段,可能会添加缺失的组件模板:

PUT _component_template/logs-foo_component2
{
  "template": {
    "mappings": {
      "properties": {
        "host.ip": {
          "type": "ip"
        }
      }
    }
  }
}

这不会对数据流产生立即的影响。映射 host.ip 只会在下次数据流自动滚动或手动触发滚动时出现在数据流映射中:

POST logs-foo-bar/_rollover