0
点赞
收藏
分享

微信扫一扫

【Java】项目整合Elasticsearch问题两则

1. 遇到“availableProcessors is already set to [8], rejecting [8]”问题

在Springboot项目整合spring-boot-starter-data-elasticsearch包之后启动出现以下问题输出

availableProcessors is already set to [8], rejecting [8]

重新查看了配置信息并未发现存在什么问题,后来按照网上的解决方案解决的这个问题。

按照网上的说法是spring-boot-starter-data-elasticsearchautoconfiguration中采用了一个参数与Netty发生冲突,建议修改成如下写法:

@Configuration
public class EsConfig {

/**
* 解决data-elasticsearch中与Netty之间冲突
*/
@PostConstruct
void init() {
System.setProperty("es.set.netty.runtime.available.processors", "false");
}
}

因为Springboot项目将采用Webflux组件,该组件是基于Netty来实现异步的,自动装配时恰恰与spring-boot-starter-data-elasticsearch冲突了。

2. 遇到“Factory method ‘highLevelClient‘ threw exception”问题

还是整合Elasticsearch时出现的问题,这次由于整合的是Elasticsearch的高版本,根据官方的意见提倡使用RESTful客户端进行对接,因此这次整合使用了elasticsearch-rest-client和elasticsearch-rest-high-level-client两个依赖。

但是整合完成后抛出了以下问题:

Exception encountered during context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'highLevelClient' defined in class path resource [cn/paohe/framework/configs/EsConfig.class]:
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [org.elasticsearch.client.RestHighLevelClient]:
Factory method 'highLevelClient' threw exception;

pom文件中依赖如下:

【Java】项目整合Elasticsearch问题两则_elasticsearch

从上图中可以看出pom文件的Elasticsearch客户端使用的是7.5.2版本,再看看IDE工具中引入的是什么。

【Java】项目整合Elasticsearch问题两则_spring_02

由于使用的Springboot版本是2.0.3,Elasticsearch默认依赖是5.6.10版本,这时启动就会报产生版本不一致的异常说是没有找到类。这时只能够先排除掉5.6.10版本后重新引入7.5.2版本,如下图:

【Java】项目整合Elasticsearch问题两则_spring_03

虽然version中会提出警告信息,但是这里必须制定7.5.2版本不然又会重新引入5.6.10了,如下图:

【Java】项目整合Elasticsearch问题两则_java_04

举报

相关推荐

0 条评论