背景:之前產(chǎn)品里面用到的ElasticSearch服務(wù),是單獨部署的服務(wù)栗精。調(diào)用的時候是后端發(fā)送http請求es服務(wù)器,返回結(jié)果后再次查詢數(shù)據(jù)庫獲取數(shù)據(jù)。為了減少不必要的http請求峻汉,故將es服務(wù)集成到后端服務(wù)中。在此記錄一下
說做就做
ElasticSearch版本5.0.1
直接把es服務(wù)作為后端服務(wù)的module引入脐往,啟動服務(wù)休吠。報錯
Caused by: java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW
at org.elasticsearch.common.xcontent.json.JsonXContent.<clinit>(JsonXContent.java:76)
at org.elasticsearch.common.xcontent.XContentType$1.xContent(XContentType.java:58)
at org.elasticsearch.common.settings.Setting.arrayToParsableString(Setting.java:698)
at org.elasticsearch.common.settings.Setting.lambda$listSetting$26(Setting.java:656)
at org.elasticsearch.common.settings.Setting$$Lambda$38/1908571316.apply(Unknown Source)
at org.elasticsearch.common.settings.Setting$2.getRaw(Setting.java:660)
at org.elasticsearch.common.settings.Setting.get(Setting.java:300)
at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:164)
at org.elasticsearch.client.transport.TransportClient.newPluginService(TransportClient.java:81)
at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:106)
at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:228)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:69)
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:365)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:310)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
... 146 more
看下報錯位置代碼
jsonFactory.configure(JsonFactory.Feature.FAIL_ON_SYMBOL_HASH_OVERFLOW, false);
發(fā)現(xiàn)
com.fasterxml.jackson.core.JsonFactory.Feature.FAIL_ON_SYMBOL_HASH_OVERFLOW
要求的jar包是jackson-core-2.8.1.jar。網(wǎng)上隨意查了一下业簿,基本上定位到是jar包沖突導(dǎo)致瘤礁。
直接上maven helper,分析有多少jar包沖突
image.png
發(fā)現(xiàn)沖突的jar包
image.png
image.png
分別引用高版本的jackson-core 并打成jar包梅尤,重新啟動
Artifact is deployed successfully
下圖為ElasticSearch版本5.0.1依賴的Jackson.core的版本
image.png
如果有做的不對的地方柜思,隨時歡迎指正!