Spring Redis Om查询时出现‘no such index’错误的解决咨询
解决Spring Redis Om启动时未创建索引导致查询报错问题
问题原因
Spring Redis Om 默认会在首次保存实体文档时自动创建对应的JSON索引,但如果在未保存任何数据前就执行查询操作,由于索引尚未创建,Redis会抛出 com.gfa.redis.model.PositionIdx: no such index 错误。
解决方案
方法1:手动在启动阶段创建索引
通过注入 RedisIndexCreator,在应用启动时主动创建实体的索引:
@SpringBootApplication @EnableRedisDocumentRepositories public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } @Bean ApplicationRunner indexInitializer(RedisIndexCreator redisIndexCreator) { return args -> { // 为Position实体创建索引 redisIndexCreator.createIndex(Position.class); }; } }
方法2:配置自动创建索引
在配置文件中开启自动创建所有@Document实体索引的功能:
application.properties
spring.data.redis.repositories.auto-create-indexes=true
application.yml
spring: data: redis: repositories: auto-create-indexes: true
补充说明
- 开启自动索引创建后,Spring Redis Om会在应用启动时扫描所有标注
@Document的实体,自动创建对应的JSON索引,无需手动调用创建方法。 - 对于
@Id字段的查询,虽然Redis的主键查询本身依赖key,但Spring Redis Om的findByXxx方法默认会基于JSON文档的索引进行查询,因此仍需确保索引存在。
内容的提问来源于stack exchange,提问作者yael martinez
相关产品推荐
相关产品推荐

