如何使用Spring Data Elasticsearch创建指定名称的映射索引
解决方案
有两种常用的实现方式,你可以根据自身需求选择:
方案1:实体类注解静态指定(适合索引名固定的场景)
直接在标注了@Document的SmartStoreNew实体类上配置indexName属性即可,原有业务代码不需要做任何修改:
// 实体类注解修改示例 @Document(indexName = "your_custom_index_name") // 替换为你需要的索引名 data class SmartStoreNew( // 保持原有字段定义不变 )
你原本的创建索引代码无需改动,执行时会自动使用注解中指定的索引名完成创建:
val indexOperations = template.indexOps(SmartStoreNew::class.java) indexOperations.create()
方案2:动态传入索引名(适合需要运行时灵活切换索引的场景)
如果你需要在代码运行时动态指定索引名,不想和实体类的注解配置绑定,可以直接给indexOps方法传入IndexCoordinates对象来指定索引名:
// 直接传入目标索引名生成IndexCoordinates对象 val indexOps = template.indexOps(IndexCoordinates.of("your_dynamic_index_name")) // 如果需要沿用SmartStoreNew实体的字段映射配置,可按以下方式调用 indexOps.create(template.indexOps(SmartStoreNew::class.java).mapping) indexOps.putMapping()
注意:如果同时配置了注解
indexName和动态传入索引名,会优先使用动态传入的索引名。
内容的提问来源于stack exchange,提问作者TNX2021
相关产品推荐
相关产品推荐

