如何在创建新索引时复用Elasticsearch原索引的Mappings?
解决Elasticsearch新索引继承原索引Mappings的问题
嘿,你已经走对了关键一步——成功拿到原索引的Mappings对象了!接下来只需要把这个srcMappings直接传递给新索引的Mappings配置里,就能实现完全一致的映射啦。
完整代码示例
// 先获取原索引的Mappings var srcMappings = client.GetMapping(new GetMappingRequest((Indices)sourceIndexName)).Mappings; // 创建新索引时直接复用原Mappings var response = client.CreateIndex(destinationIndex, c => c .Settings(...my settings ...) // 这里要注意:如果原索引有自定义分析器、过滤器这类配置,一定要同步到新索引的Settings中 .Mappings(m => m .Map(srcMappings) // 核心操作:传入已获取的原索引Mappings对象 ) );
额外提醒
- 这样配置后,新索引的所有字段类型、分词规则、可索引属性等都会和原索引完全匹配,不会有遗漏。
- 要是原索引的Settings里定义了自定义分析器,新索引必须同步这些配置,否则映射里引用的分析器会找不到,导致索引创建失败哦。
内容的提问来源于stack exchange,提问作者hyankov
相关产品推荐
相关产品推荐

