我正在从在 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是host ip: 暴露给elasticsearch集群连接节点客户端的端口。
我无法在主机中公开任何其他端口,因为 9300 端口是在 elasticsearch config yml 中设置为 tcp 传输端口的端口。
这个问题是我无法启动多个具有连接到同一个 elasticsearch 集群的 elasticsearch 客户端的 docker 容器,因为每个容器都不能在同一台机器上公开相同的端口。
最佳答案
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 个 elasticsearch 容器
关于java - 从在 docker 容器中运行的 elasticsearch 客户端连接 elasticsearch 集群(即非 dockerized),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345344/