当前位置: 首页 > 知识库问答 >
问题:

通过Spring数据使用elasticsearch 2.4的Spring护套2

韩淇
2023-03-14

我有一个spring boot 1.5.9应用程序,它使用spring数据elasticsearch(2.1.3)连接到elasticsearch 2.4.0实例。现在,我需要将spring boot升级到版本2,使其能够与新的依赖项一起工作。

如果我使用最新的spring启动版本(2.1.0),它附带了spring数据elasticsearch 3.1.2,它使用elasticsearch 6.4.2。但是根据https://github.com/spring-projects/spring-data-elasticsearch我应该使用spring数据elasticsearch 2.1。因此,我指定了以下版本:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.1.0.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-elasticsearch</artifactId>
  <version>2.1.3.RELEASE</version>
  <exclusions>
    <exclusion>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.elasticsearch</groupId>
  <artifactId>elasticsearch</artifactId>
  <version>2.4.6</version>
</dependency>

但是现在我得到了以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'partSearchRepository': Invocation of init method failed; nested exception is java.lang.AbstractMethodError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
... 42 more
Caused by: java.lang.AbstractMethodError
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:537)
at org.springframework.data.mapping.context.AbstractMappingContext$PersistentPropertyCreator.doWith(AbstractMappingContext.java:515)
at org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:750)
at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:383)
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:248)
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:191)
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:85)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$4(RepositoryFactoryBeanSupport.java:295)
at java.util.Optional.ifPresent(Optional.java:159)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:295)
at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:67)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1741)
... 52 more

其中partSearchRepository定义为:

public interface PartSearchRepository extends ElasticsearchRepository<Part, Long> {
}

由此我推断,spring数据elasticsearch(请参阅ElasticsearchRepositoryFactoryBean.afterPropertiesSet())不能很好地与较新的spring数据公用程序配合使用。

有没有办法将Spring靴2与elasticsearch 2.4配合使用?

共有1个答案

苏嘉志
2023-03-14

Spring护套2.1,需要Spring5.1。您正在使用的Spring Data ElasticSearch版本绑定到Spring 4,因此无法正常工作。

因此,简短的回答是不,你不能。

 类似资料:
  • 所以我有一个旧的工作应用程序,它使用SpringMVC而不是Springboot。我在我的项目中添加了spring-webflux的gradle依赖项,并开始使用webclient从我的项目调用外部API。这是我的webclient处理程序类: 现在,当我通过我的API调用此代码后,我收到了这个错误: 通过构造函数参数 0 表示的未满足依赖关系;嵌套的例外是组织.Spring框架.豆.工厂.NoS

  • 我有一个SpringBoot项目,它使用SpringDataREST生成我的rest接口,我正在尝试允许对嵌套资源进行分页。我遵循了这一解决方法,并陷入了实现findBy查询的困境。 我有以下设备实体: 我需要使用userId查询它: 因此,我在DevicePository中创建了以下方法: 但我在尝试向该endpoint发送请求时遇到以下异常: 有人能告诉我我做错了什么吗? 编辑:谢谢你的回复,

  • 我正在使用Spring应用程序。在浏览器上一切正常。我可以使用现有用户登录,只需提供我的用户名和密码。我也可以注册一个新用户,然后用它登录。 我还可以调用一些RESTendpoint。我没有手动定义这些endpoint。它们是自动创建的,因为我使用的是SpringBootStarter数据rest依赖项。 REST请求的URL如下所示http://localhost:8182/api/v1/rec

  • 我的项目中有两个域对象,和。s分别与单个相关联。我正在使用Spring-Data-Rest,它是抽象,所以我有这个: 当我通过HTTP获取时,我会得到这个: 但是,我不能将相同的内容发回以首先创建文档。我发现最好的办法是发布以下内容: 然而,这似乎真的很奇怪,因为: a) 现在,我在对象中嵌入了一个未命名、未类型化的链接,这不是很HATEAOS(尽管Spring似乎正确地反序列化了它)。 b)我现

  • 我正在使用Spring Data Rest向我们的React前端应用程序公开JPA存储库。我还使用Spring Security性和JWT来保护REST API。 我的问题: 如何预防这样的异常用法? 使用Spring Data REST的最佳实践是什么?

  • 问题内容: 我试图在一个小型独立应用程序中一起使用spring数据和spring config。 1. 我的问题是如何在不使用Spring的情况下发现spring数据存储库 通过spring config? 2. 如果没有,我可以以某种方式一起使用“ ClassPathXmlApplicationContext”和“ AnnotationConfigApplicationContext”吗? 问题