加载中

忽略缺失的组件模板

当索引模板引用了可能不存在的组件模板时,可以使用 ignore_missing_component_templates 配置选项。使用此选项后,每次基于该索引模板创建数据流时,都会检查组件模板是否存在。如果存在,它将用于形成索引的组合设置。如果缺失,它将被忽略。

以下示例演示了该配置选项的工作原理。

在此示例中,创建了一个索引模板和一个组件模板。该索引模板引用了两个组件模板,但只有一个存在。

假设 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 索引模板将成功创建,但它不会验证 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
}
		

可以基于此模板创建数据流

				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
		
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.