You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目无法连接服务器Docker部署的Elasticsearch报错如何解决

问题排查与解决方案

根因定位

报错明确为java.net.ConnectException: Timeout connecting to [/206.189.178.228:9200],即Spring Boot服务无法正常与Elasticsearch服务的9200端口建立网络连接,可按以下步骤依次排查修复:


排查步骤

1. 确认Elasticsearch服务本身正常运行

  • 登录部署Elasticsearch的服务器,执行命令curl http://localhost:9200,如果返回包含ES版本、集群名称的JSON响应,说明ES服务启动正常。
  • 如果无响应,执行docker ps查看searchservice-elasticsearch容器是否处于运行状态,异常退出的话执行docker logs [容器ID]查看ES启动报错日志排查原因,常见问题包括内存不足、权限不足等。

2. 排查网络连通性问题

你当前的配置存在明显的网络配置错误:Spring Boot服务加入了food_default外部网络,但Elasticsearch容器未配置加入该网络,容器跨网络无法直接通信。可选择以下两种方案修复:

方案A:走容器内部网络(推荐,更安全高效)

无需公网开放9200端口,同主机Docker容器内部通信即可:

  1. 修改elasticSearch.yml,为ES服务添加网络配置,和Spring Boot服务保持在同一网络:
version: '2'
services:
  searchservice-elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - 'ES_JAVA_OPTS=-Xms1024m -Xmx1024m'
      - 'discovery.type=single-node'
    # 新增网络配置
    networks:
      - food_default
networks:
  food_default:
    external: true
  1. 统一所有ES连接地址为Docker服务名searchservice-elasticsearch:9200,需要修改的配置点:
  • searchService.yml中的三个参数:
    • SPRING_DATA_JEST_URI=http://searchservice-elasticsearch:9200
    • SPRING_ELASTICSEARCH_REST_URIS=http://searchservice-elasticsearch:9200
    • elasticsearch.host=http://searchservice-elasticsearch:9200
  • 项目内ElasticsearchConfiguration配置类:将connectedTo("206.189.178.228:9200")修改为connectedTo("searchservice-elasticsearch:9200")
  • application-prod.yml中的两个配置:
    spring:
      data:
        jest:
          uri: http://searchservice-elasticsearch:9200
      elasticsearch:
        rest:
          uris: http://searchservice-elasticsearch:9200
    

方案B:走公网IP访问

如果需要跨主机访问ES:

  1. 确认云服务器控制台安全组开放了9200端口的入站规则,同时服务器内部防火墙(firewalld/iptables)也开放9200端口。
  2. 在部署Spring Boot服务的主机上执行curl http://206.189.178.228:9200验证连通性,连通后再启动服务。

3. 修正其他错误配置

  • 你当前searchService.yml中SPRING_ELASTICSEARCH_REST_URIS配置为http://0.0.0.0:9200属于错误配置,0.0.0.0是服务监听地址,不能作为访问地址使用,必须替换为实际的ES访问地址。
  • 确认Spring Data Elasticsearch版本和ES 7.1.0版本匹配,对应Spring Data Elasticsearch版本为3.2.x,避免版本不兼容导致的连接异常。

内容的提问来源于stack exchange,提问作者Abdalrhman Alkraien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:15:04