2016-05-10 93 views
1

我從我的web應用程序連接到使用Java API的Elasticsearch實例:如何使用泊塢窗撰寫連接到Elasticsearch

static Optional<Client> getClient(String hostName, int port) { 
    return getHost(hostName).map(host -> TransportClient.builder().build() 
     .addTransportAddress(new InetSocketTransportAddress(host, port)) 
); 
} 

static Optional<InetAddress> getHost(String hostName) { 
    InetAddress host = null; 
    try { 
    host = InetAddress.getByName(hostName); 
    } catch (UnknownHostException e) { 
    LOG.warn("Could not get host: {}", hostName, e); 
    } 
    return Optional.ofNullable(host); 
} 

之前切換到Docker Compose,我使用

docker run --net=my-network --name=myDb elasticsearch 

,並開始Elasticsearch我的網絡應用程序使用

docker run --net=my-network -p 8080:4567 me/myapp 

和果然,我可以連接到數據庫我們ing getClient("myDb", 9300)

但是現在我已經切換到Docker Compose,我不知道如何連接到Elasticsearch。這是我目前docker-compose.yml

version: '2' 

services: 
    my-app: 
    image: me/myapp 
    ports: 
     - "8080:4567" 
    networks: 
     - my-network 

    elasticsearch: 
    image: elasticsearch 
    networks: 
     - my-network 

networks: 
    my-network: 
    driver: bridge 

可以理解的,這導致在UnknownHostException,因爲我沒有把我的Elasticsearch實例的主機名在docker-compose.yml

我該怎麼做?

回答

0

我必須設置一個alias

elasticsearch: 
    image: elasticsearch 
    networks: 
     my-network: 
     aliases: 
      - myDb 

現在我可以調用的問題出getClient("myDb", 9300)當連接到myDb端口9300。