错误信息
elasticsearch:java.lang.IllegalStateException: availableProcessors is already set to [12], rejecting [12]
分析原因
SpringBoot 2.X 的 *`spring-boot-starter-data-redis`* 默认是以 *`lettuce`* 作为连接池的, 而在 lettuce , elasticsearch transport 中都会依赖netty, 二者的netty 版本不一致,不能够兼容
过程分析
// 设置环境变量,解决Es的netty与Netty服务本身不兼容问题
System.setProperty("es.set.netty.runtime.available.processors","false");
解决不了问题
解决
查看项目用的Springboot版本是2.3.x, 查看spring官网
但是由于es的客户端和服务端的es版本必须是一个大版本内,服务端的版本应该是5.x版本
开发的项目的springboot版本又不能降低,所以
<elasticsearch.version>5.2.2</elasticsearch.version>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
完美解决