Springboot2.0.4集成ElasticSearch6,启动项目报错,无法注入TransportClient
Elasticsearch | 作者 yjc | 发布于2018年10月08日 | 阅读数:11485
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代码
在单元测试的时候是可以获取到这个连接的
依赖如下,目前使用的是6.1.3,更换了6.2.4版本也没有作用,因为本机使用的6版本,所以没有使用5版本及以下的依赖,求大神解答
以下是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>
1 个回复
dawn1ng
赞同来自: yjc
可以在初始化时设置一下这个属性,或者直接在启动之前设置
System.setProperty("es.set.netty.runtime.available.processors", "false");