使用Java客户端创建ElasticSearch映射时的AbstractMethodError

时间:2018-08-14 14:17:26

标签: java elasticsearch spring-data spring-data-elasticsearch

我正在使用带有弹性搜索2.4.4的Spring Data Elastic Search 2.1.12.RELEASE。

我有以下代码:

elasticsearchTemplate.createIndex(indexName);
elasticsearchTemplate.addAlias(alias);
elasticsearchTemplate.putMapping(MyElasticEntity.class);  //FAILS HERE!

我的实体是:

@Document(indexName = "psp", type = "payouts")
public class MyElasticEntity {

    @Id
    String id;

    UUID payoutId;

    // more fields of type UUID, enum, String, Instant and Long. Nothing unusual.

    @Version
    Long version;
}

我的代码在以上putMapping中失败,并显示:

  

原因:java.lang.AbstractMethodError:在null处   org.springframework.data.mapping.context.AbstractMappingContext $ PersistentPropertyCreator.createAndRegisterProperty(AbstractMappingContext.java:552)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.data.mapping.context.AbstractMappingContext $ PersistentPropertyCreator.doWith(AbstractMappingContext.java:530)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.util.ReflectionUtils.doWithFields(ReflectionUtils.java:729)   〜[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:398)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:229)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:172)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:85)   〜[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE]在   org.springframework.data.elasticsearch.core.ElasticsearchTemplate.getPersistentEntityFor(ElasticsearchTemplate.java:1094)   〜[spring-data-elasticsearch-2.1.12.RELEASE.jar:na]在   org.springframework.data.elasticsearch.core.ElasticsearchTemplate.putMapping(ElasticsearchTemplate.java:183)   〜[spring-data-elasticsearch-2.1.12.RELEASE.jar:na]在   psp.elasticsearch.ESReindexingResource.reindexPayouts(ESReindexingResource.java:60)   〜[classes /:na]在sun.reflect.NativeMethodAccessorImpl.invoke0(本机   方法)〜[na:1.8.0_172]在   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   〜[na:1.8.0_172]在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   〜[na:1.8.0_172]在java.lang.reflect.Method.invoke(Method.java:498)   〜[na:1.8.0_172]在   org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)   〜[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)   〜[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)   〜[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)   〜[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)   〜[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)   〜[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE]在   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)   〜[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] ... 86个常见框架   省略

似乎所使用的实现是org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext类型,它的确定义了createPersistentProperty()实现。

在Google周围搜索时,发现有关我的库版本不兼容的建议。我怀疑这是原因,但似乎找不到问题。

有人建议在我的pom文件中包括spring-data-commons,但这没用(可能是因为我添加了错误的版本-无论如何,它已经通过传递依赖项存在了)。

如果我使用curl命令创建映射,然后仅添加文档,它就可以正常工作,因此肯定在我的Java代码(与我共享的代码一样简单)或依赖项中有问题。

任何想法如何解决或更好地调试它?

0 个答案:

没有答案