代码之家  ›  专栏  ›  技术社区  ›  redwulf

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

  •  2
  • redwulf  · 技术社区  · 8 年前

    我使用的是Spring Data Elastic Search 2.1.12。使用弹性搜索2.4.4发布。

    我有以下代码:

    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:空 组织。springframework。数据映射。上下文AbstractMappingContext$PersistentPropertyCreator。createAndRegisterProperty(AbstractMappingContext.java:552) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。数据映射。上下文AbstractMappingContext$PersistentPropertyCreator。doWith(AbstractMappingContext.java:530) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。util。反射率TILS。doWithFields(ReflectionUtils.java:729) ~(spring-core-5.0.5释放罐:5.0.5释放)位于 组织。springframework。数据映射。上下文AbstractMappingContext。addPersistentEntity(AbstractMappingContext.java:398) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。数据映射。上下文AbstractMappingContext。getPersistentEntity(AbstractMappingContext.java:229) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。数据映射。上下文AbstractMappingContext。getPersistentEntity(AbstractMappingContext.java:172) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。数据映射。上下文AbstractMappingContext。getPersistentEntity(AbstractMappingContext.java:85) ~[spring-data-commons-2.0.6.RELEASE.jar:2.0.6.RELEASE] 组织。springframework。数据elasticsearch。果心ElasticsearchTemplate。getPersistentEntityFor(ElasticsearchTemplate.java:1094) ~[spring-data-elasticsearch-2.1.12.版本.jar:na]at 组织。springframework。数据elasticsearch。果心ElasticsearchTemplate。putMapping(ElasticsearchTemplate.java:183) ~[spring-data-elasticsearch-2.1.12.版本.jar:na]at 方法)~(na:1.8.0\u 172)at 太阳反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:62) ~(na:1.8.0\u 172)at 太阳反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.java:43) java上的~[na:1.8.0\u 172]。lang.reflect。方法调用(Method.java:498) ~(na:1.8.0\u 172)at 组织。springframework。网状物方法支持InvocableHandlerMethod。doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]位于 组织。springframework。网状物方法支持InvocableHandlerMethod。invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]位于 ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] 组织。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerAdapter。invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] 组织。springframework。网状物servlet。mvc。方法AbstractHandlerMethodAdapter。句柄(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.5.RELEASE.jar:5.0.5.RELEASE] 组织。springframework。网状物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() 实施

    在谷歌上搜索,我发现有人建议我有不兼容的库版本。我怀疑这就是原因,但似乎找不到问题所在。

    有人建议包括 spring-data-commons 在我的pom文件上,但这不起作用(可能是因为我添加了错误的版本-它已经存在了,通过传递依赖关系)。

    如果我用curl命令创建映射,然后只添加文档,它就会工作,所以肯定是java代码(与我共享的代码一样简单)或依赖项出了问题。

    如何修复或更好地调试此问题?

    0 回复  |  直到 8 年前