我使用的是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代码(与我共享的代码一样简单)或依赖项出了问题。
如何修复或更好地调试此问题?