为什么我们需要设置发布地址 [network.host] 值

why do we need to setup a publish address[network.host] value

如果不在此 属性 中设置盒子的 IP 地址,似乎无法发现弹性搜索:network.host

为什么它不能绑定到盒子的 ip 地址(就像它发生在应用程序服务器中一样,比如 rest 应用程序)。 为什么还要绑定特定的IP地址?

此更改已在 2.0 中引入,如 breaking changes > network changes 文档中所述:

This change prevents Elasticsearch from trying to connect to other nodes on your network unless you specifically tell it to do so. When moving to production you should configure the network.host parameter

ES 的人当时也发布了一个 blog article 来解释这个变化的根本原因,即主要是为了防止你的节点意外绑定到网络上可用的另一个集群。

重要的关键 属性 是 network.publish_host。您可以通过 network.host 间接配置它。发布主机是节点向其他节点通告的地址,作为它们加入集群时要到达的地址。因此,它需要是可以从其他节点访问的东西。例如。 127.0.0.1 不适用于此;同样,负载平衡地址也不起作用。

另见 documentation for these properties

许多服务器有多个网络接口,在此更改之前的一个常见问题是 Elasticsearch 为发布主机选择了错误的接口,然后无法集群,因为节点最终向彼此广播了错误的地址。由于 Elasticsearch 无法知道正确的接口,因此您必须告诉它。

到本地网络上的 运行 单个节点 我将这些添加到我的 取消评论或评论 elasticsearch.yml

http.port: 9201
http.bind_host: 192.168.1.172 #works

http.port: 9201
http.publish_host: 192.168.1.172 #by itself does not work
http.host: 192.168.1.172 #works alone