Elasticsearch 8.x如何为指定模式索引自动应用映射模板?
在Elasticsearch 8.x中自动为匹配模式的索引应用映射
完全可以通过**索引模板(Index Templates)**实现你的需求,无需手动给每个earnings-*索引配置映射。索引模板就是用来让符合指定名称模式的索引在创建时自动套用预定义的映射、设置等规则的工具,刚好适配你批量创建索引的场景。
创建适配earnings-*的索引模板
执行以下API命令创建模板:
PUT _index_template/earnings_template { "index_patterns": ["earnings-*"], "template": { "mappings": { "properties": { "my_salary": { "type": "nested" } } } }, "priority": 100 }
参数说明:
index_patterns: 指定匹配的索引名称模式,这里earnings-*会匹配所有以earnings-开头的索引。template.mappings: 定义要自动应用的映射规则,这里明确将my_salary设为nested类型。priority: 模板优先级,如果有多个模板匹配同一索引,优先级高的会覆盖优先级低的(默认是0,这里设100确保生效)。
生效规则
- 新创建的
earnings-*索引(比如earnings-2023-01)会自动套用这个模板的映射,无需手动执行PUT /_mapping命令。 - 已经存在的
earnings-*索引不会自动应用模板,你需要手动更新这些旧索引的映射(就像你之前做的那样),但后续新创建的索引都会自动生效。
关于动态映射的说明
动态映射是Elasticsearch根据写入的文档自动推断字段类型的机制,和你需要的预定义固定字段类型场景不同。索引模板是主动指定规则,不管写入什么文档,my_salary都会被设为nested类型,更符合你的需求。
内容的提问来源于stack exchange,提问作者Ricko
相关产品推荐
相关产品推荐

