网上找了很多都没能解决,这里先说下网上的解决方案吧
1、在初始化transportClient方法前添加
System.setProperty("es.set.netty.runtime.available.processors", "false");
2、将elasticsearch的config添加
Settings settings = Settings.builder()
.put("cluster.name", this.esName)
.put("client.transport.sniff", true)
.put("transport.type","netty3")
.put("http.type", "netty3")
.build();
后来发现网上的解决办法对我都没啥用,后来仔细看了下报错是找不到NettyRuntime这个类,然后用idea全局搜了下发现在org.elasticsearch.plugin:transport-netty4-client这个包下存在,然后再看了下依赖,结果冲突了,然后我再看了下自己的netty版本是4.1.6,4.1.6下是没有NettyRuntime这个类的所以发生了报错。
所以解决办法有多种,我这里直接又加了个依赖,其实你可以让netty和elasticsearch的版本对应就好了。
在pom中引用(解决)
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>5.2.2</version>
</dependency>