当遇到以下报错
org.elasticsearch.client.ResponseException: method [GET], host [http://localhost:9200], URI [/_cluster/health/], status line [HTTP/1.1 404 Not Found]
Not Found
可知http://localhost:9200无法正常访问
这是因为 actuator 对 elasticsearch 进行健康检查,而且
public class ElasticsearchRestClientProperties {
private List<String> uris = new ArrayList(Collections.singletonList("http://localhost:9200"));
ElasticsearchRestClientProperties直接写死了这个http://localhost:9200
那么如果你的Elasticsearch不部署在localhost也就是宿主机,这个检查必然失败
我总结有两种解决方案:
1.在yml中配置:
management:
health:
elasticsearch:
enabled: false
关闭Elasticsearch健康检查,且有助于提高运行速度(配置独立于spring配置之外,可以在最先)
2.在yml中配置:
spring:
elasticsearch:
rest:
uris: http://xxx:9200
配置 Spring Boot 应用连接指定的 Elasticsearch 实例,替换localhost为实际的 Elasticsearch 服务器的地址和端口。(配置在spring里面)