springBoot集成elasticsearch启动报错

277 阅读1分钟

错误信息

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官网

5d22c9347668c147c7cf7dcd13acbf7b.png 但是由于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>

完美解决