Elasticsearch health check failed 解决
Springboot 项目配置了 elasticsearch-java
之后,启动莫名其妙报错 Elasticsearch health check failed
。网上一搜了一堆都是要在配置文件里额外配置上 uri 的。试了发现也不行,事后看下来估计那个 uri 在早期的版本里可能可以自动装配 RestClient
吧,也有可能是因为我开了账号认证,所以自动装配没有用户名密码也白搭。后来搜到原来是 Actuator 的 health check,可以直接在配置文件里禁用或者自己实现注入一个 RestClient
的 Bean 来让它检测。
具体实现可以借鉴我这段代码:
// Actuator的ES健康检查需要用到
@Bean(name = "ESHealthClient")
public RestClient ESHealthClient() {
if (!enabled) {
log.info("ESClient is not enabled");
return null;
}
RestClientBuilder builder = creatBaseConfBuilder(scheme);
// 1.账号密码的配置
//CredentialsProvider: 用于提供 HTTP 身份验证凭据的接口; 允许你配置用户名和密码,以便在与服务器建立连接时进行身份验证
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
// 2.设置账号密码
builder.setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder
.setDefaultCredentialsProvider(credentialsProvider));
return builder.build();
}
看看其他吧