小编Whi*_*teW的帖子

连接拒绝从 docker 连接到 Elasticsearch docker 容器

我正在尝试从同样位于容器内的 Java 应用程序访问容器内的 Elasticsearch 数据库。

它们都在以下 docker-compose.yml 中:

version: "3.7"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - elastic

  java-app:
    image: neileen/dockerhub_app:java-latest
    ports:
      - "8080:8080"
    depends_on:
      - es
    networks:
      - elastic

networks:
  elastic:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用桥接网络使容器彼此可见和可访问。

在我的 Java 应用程序中,我使用 RestHighLevelClient:

RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(
                            new HttpHost("es", 9200, "http")));
Run Code Online (Sandbox Code Playgroud)

我还尝试使用“localhost”和“0.0.0.0”作为主机名而不是“es”,但没有结果。

我不断得到的例外是:

java-app_1     | The cluster is unhealthy: Connection refused
java-app_1     | java.net.ConnectException: Connection refused
java-app_1     |        at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:804)
java-app_1     |        at org.elasticsearch.client.RestClient.performRequest(RestClient.java:225)
java-app_1     |        at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212) …
Run Code Online (Sandbox Code Playgroud)

java elasticsearch docker

2
推荐指数
1
解决办法
3830
查看次数

标签 统计

docker ×1

elasticsearch ×1

java ×1