首页 > 解决方案 > RestClientConfig AbstractElasticsearchConfiguration 连接到同一网络上的 docker 服务

问题描述

我正在使用 spring data elasticsearch 连接到 docker 容器中的 elasticesearch。我使用的代码可以在这里找到

  1. 高级 REST 客户端

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#reference

static class Config {

  @Bean
  RestHighLevelClient client() {

    ClientConfiguration clientConfiguration = ClientConfiguration.builder() 
      .connectedTo("elasticsearch")
      .build();

    return RestClients.create(clientConfiguration).rest();                  
  }
}

spring boot 应用程序和 docker elastic search 在同一个网络上,因为它们都在同一个目录中(spring boot docker-compose 和 elasticsearch docker-compose 文件)。

我的 elasticsearch docker-compose 就是这样

版本:'3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.6
    container_name: elasticsearch
    environment:
      - cluster.name=cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./config/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/elasticsearch.yml
      - esdata6:/usr/share/elasticsearch/data    
    ports:
      - "9200:9200"
  kibana:
    image: docker.elastic.co/kibana/kibana:6.8.6
    container_name: kibana
    volumes:
      - ./config/kibana/kibana.yml:/usr/share/kibana/kibana.yml
    restart: on-failure
    ports:
      - "5601:5601"

volumes:
  esdata6:

我收到错误

Caused by: java.io.IOException: elasticsearch
Caused by: java.net.UnknownHostException: elasticsearch

如何让我的 spring boot 看到 elasticsearch 服务名称并解决它?我认为这与 RestClients 有关。

标签: spring-bootdockerelasticsearch

解决方案


推荐阅读