我从在docker容器中运行的elasticsearch客户端连接到elasticsearch集群(即非dockerized)。我可以通过在客户端设置为:
来完成此操作Settings settings = ImmutableSettings.settingsBuilder()
.put("node.name", "HelloESClient")
.put("discovery.zen.ping.multicast.enabled", false)
.put("discovery.zen.ping.unicast.hosts", "172.16.11.50")
.put("transport.publish_port", "9300")
.put("transport.publish_host", "192.168.17.131");
其中192.168.17.131:9300是为弹性搜索集群公开的主机ip:端口连接到节点客户端。
我无法公开主机中的任何其他端口,因为9300端口是elasticsearch config yml中设置为tcp传输端口的端口。
这个问题是我无法启动多个docker容器,其中elasticsearch客户端连接到同一个elasticsearch集群,因为每个容器都不能在同一台机器上公开相同的端口。
答案 0 :(得分:1)
docker run -d -p 9300:9300 --name es1 elasticsearch
docker run -d -p 9301:9300 --name es2 elasticsearch
docker run -d -p 9302:9300 --name es3 elasticsearch
docker run -d -p 9303:9300 --name es4 elasticsearch
现在你有4个弹性搜索容器