问题描述
我需要你的帮助。我不知道这是怎么了。
当我启动JavaApp从ElasticSearch获取数据时,我得到了这个ClassCastException:
ElasticDBPersistanceImp | findQueryField Failed for templateId
java.lang.classCastException: org.elasticsearch.cluster.Metadata.MappingMetadata cannot be cast to org.elasticsearch.cluster.Metadata.MappingMetaData
at com.initka.bprocess.hforms_formlist.persistance.impl.elastic.ElasticDBPersistanceImpl.getAllFields(ElasticDBPersistanceImpl.java:251) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.persistance.impl.elastic.ElasticDBPersistanceImpl.findQueryField(ElasticDBPersistanceImpl.java:226) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.persistance.impl.elastic.ElasticDBPersistanceImpl.getFieldDatadistict(ElasticDBPersistanceImpl.java:163) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.startup.FormlistSecurityServiceImpl.getTemplateIds(FormlistSecurityServiceImpl.java:40) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.startup.FormlistSecurityServiceImpl.<init>(FormlistSecurityServiceImpl.java:21) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.startup.HformsFormlistFactoryImpl.<init>(HformsFormlistFactoryImpl.java:55) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.startup.Booter.startTenant(Booter.java:70) ~[classes/:?]
at com.initka.bprocess.hforms_formlist.startup.Booter.lambda$0(Booter.java:45) ~[classes/:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
我正在使用的代码在https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-get-mappings.html
的文档中提供因此,经过一些修改后,它看起来像:
GetMappingsResponse mapping1 = dbManager.getFormlistDBConnection().indices().getMapping(getMappingsRequest,RequestOptions.DEFAULT);
Map<String,MappingMetaData> mappings2 = mapping1.mappings();
MappingMetaData mappingMetaData = mappings2.get(indexName);
Map<String,Object> sourceAsMap = mappingMetaData.getSourceAsMap();
所以也许你们当中有人有一个主意,这里怎么了?
预先感谢
解决方法
经过数小时的搜索,看来这是maven遇到的问题。
删除本地Maven存储库后,重新加载似乎可以正常工作的源文件。