elasticsearch-rest-high-level-client error:NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

问题

这几天尝试更换es客户端为 elasticsearch-rest-high-level-client,代码都写好了,单测跑起来,但是报错了,错误信息如下:


java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

	at org.elasticsearch.common.xcontent.json.JsonXContent.<clinit>(JsonXContent.java:57)
	at org.elasticsearch.common.xcontent.XContentType$1.xContent(XContentType.java:56)
	at org.elasticsearch.common.xcontent.XContentHelper.toXContent(XContentHelper.java:344)
	at org.elasticsearch.common.xcontent.XContentHelper.toXContent(XContentHelper.java:335)
	at org.elasticsearch.client.RequestConverters.createEntity(RequestConverters.java:641)
	at org.elasticsearch.client.RequestConverters.update(RequestConverters.java:345)
	at org.elasticsearch.client.RestHighLevelClient$$Lambda$74/1046723947.apply(Unknown Source)
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1589)
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1563)
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1525)
	at org.elasticsearch.client.RestHighLevelClient.update(RestHighLevelClient.java:894)
	at
	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:483)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	at org.testng.internal.MethodInvocationHelper$1.runTestMethod(MethodInvocationHelper.java:182)
	at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.run(AbstractTestNGSpringContextTests.java:171)
	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:483)
	at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:194)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:707)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
	at org.testng.SuiteRunner.run(SuiteRunner.java:240)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
	at org.testng.TestNG.run(TestNG.java:1031)
	at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

我的es版本信息为:6.5.4

解决问题

看了网上的很多博客信息,大致意思就是jackson 版本冲突,引入了低版本的jackson,导致了es需要的一些东西找不到,于是开始了排除jar包,用命令:

mvn dependency:tree -Dverbose  > tree.log

来看下jar包依赖情况,只保留es自带的jackson,其他全部排掉,在pom中排掉:

<exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
</exclusions>

然后再次启动,还是报错,后面把es中的jackson 也排掉了,重新引入一个一模一样版本号的jackson:


 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.11</version>
        </dependency>

运行单测,没有报错信息,并且es中的字段也确实被修改了。

参考博客

elastictsearch报错java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值