绊脚石乃是进身之阶。

Springboot2.0.4集成ElasticSearch6,启动项目报错,无法注入TransportClient

Elasticsearch | 作者 yjc | 发布于2018年10月08日 | 阅读数:10534

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transportClient' defined in class path resource [com/xunwu/config/ElasticSearchConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: Factory method 'transportClient' threw exception; nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
 
以下是TransportClient代码
    @Bean
public TransportClient transportClient() {

logger.info("初始化开始。。。。。");

TransportClient client = null;

TransportAddress master = null;

try {
master = new TransportAddress(
InetAddress.getByName("127.0.0.1"), Integer.valueOf(9300));
Settings settings = Settings.builder()
// 集群的名称
.put("cluster.name", "search")
// 自动发现节点
.put("client.transport.sniff", true)
.build();

client = new PreBuiltTransportClient(settings)
.addTransportAddress(master);
} catch(UnknownHostException e){
e.printStackTrace();
logger.info("初始化bean失败");
}

return client;
}

在单元测试的时候是可以获取到这个连接的
@Autowired
private TransportClient client;

@Test
public void contextLoads() {

System.out.println(client);

}
就是启动SpringBoot的时候无法启动,无法注入TransportClient这个Bean。
 
依赖如下,目前使用的是6.1.3,更换了6.2.4版本也没有作用,因为本机使用的6版本,所以没有使用5版本及以下的依赖,求大神解答
<elasticsearch.version>6.1.3</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>
已邀请:

dawn1ng

赞同来自: yjc

应该是netty冲突的问题
可以在初始化时设置一下这个属性,或者直接在启动之前设置
System.setProperty("es.set.netty.runtime.available.processors", "false");

要回复问题请先登录注册