You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:42:58