JAVA AI+elasticsearch向量存储版本匹配
做一个org.springframework.ai+elasticsearch的知识问答,出现了java.lang.NoSuchMethodError: 'co.elastic.clients.elasticsearch._types.KnnSearch$Builder co.elastic.clients.elasticsearch._types.KnnSearch$Builder.k(java.lang.Integer)'的错误,反复翻了一下午,不知道问题在哪里,后来直接在github找原生,发现这个:
https://github.com/spring-projects/spring-ai/issues/2270
https://github.com/spring-projects/spring-ai/issues/2322
是spring boot的版本和es必须要匹配,试了好半天,目前这个能用:
JDK 17
spring boot 3.4.0
elasticsearch:8.14.0
org.springframework.ai:1.0.0-M6
spring-ai-elasticsearch-store:1.0.0-M6
pom配置大体如下:
<properties><spring-ai.version>1.0.0-M6</spring-ai.version><elasticsearch.version>8.14.0</elasticsearch.version></properties><dependencies><!-- Spring Boot基础依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring AI核心依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-core</artifactId><version>${spring-ai.version}</version></dependency><!-- spring-ai-自动配置 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-spring-boot-autoconfigure</artifactId><version>${spring-ai.version}</version></dependency><!-- open AI核心依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>${spring-ai.version}</version></dependency><!-- 文档处理依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-reader</artifactId><version>${spring-ai.version}</version></dependency><!-- ai-elasticsearch-store --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-elasticsearch-store</artifactId><version>${spring-ai.version}</version><exclusions><exclusion><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId></exclusion><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion></exclusions></dependency><!-- elasticsearch客户端 --><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><exclusions><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion></exclusions><version>${elasticsearch.version}</version></dependency><!-- elasticsearch-rest-client --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elasticsearch.version}</version></dependency><!--<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-elasticsearch-store-starter</artifactId><version>${spring-ai.version}</version></dependency>--><!-- Milvus客户端依赖 --><!-- <dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.0.0</version></dependency> --><!-- Java工具类库 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version></dependency><!--lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- 测试类 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><scope>test</scope></dependency></dependencies>