无法从服务器外部访问 ElasticSearch 实例 - Azure Windows 2012

ElasticSearch instance not reachable from outside the server - Azure Windows 2012

我已将 Elastic Search 2.3.0 设置为带有 Windows Server 2012 R2 的 Azure VM 中的一项服务。我可以使用

从服务器内部访问弹性搜索实例
http://localhost:9200

但我无法从服务器外部访问。

我尝试了什么?

也用 VM Classic 试过这个。

同样为了测试虚拟机是否正常,我在那台机器上设置了IIS,打开了80端口。默认的IIS页面可以从外部访问。

我唯一没有尝试的是在 Linux VM 中设置 ES。

我在 elasticsearch 日志中找不到任何内容。在浏览器 (Chrome) 上,网络中没有日志。它只是旋转,等待服务器,然后用 "ERR_EMPTY_RESPONSE".

捕捉

做过这件事的任何人都可以解释一下吗?

更新: 这是我在 netstat 中看到的内容:

TCP    127.0.0.1:9200         machine-name:0       LISTENING
TCP    127.0.0.1:9300         machine-name:0       LISTENING

从ES 2.0开始,elasticsearch进程只有binds to localhost,这就解释了为什么只能从ES内部查询,而不能从外部查询。

您需要在 elasticsearch.yml 配置文件中更改以下设置:

network.host: 0.0.0.0

我建议将 network.host 设置为特殊值

例如

network.host: [_local_, _site_]

这对我有用。

请注意,对我来说,只有在设置

后才能成功
http.host: 0.0.0.0

而不是

http.host: "localhost"

我有同样的情况。查看日志

tail -f /var/log/elasticsearch/NODE.log

我看到了这个:

 [NODE_NAME] publish_address {10.XXX.XXX.XXX:9300}, bound_addresses {10.XXX.XXX.XXX:9300}
 [NODE_NAME] bound or publishing to a non-loopback address, enforcing bootstrap checks
 [NODE_NAME] node validation exception
 [1] bootstrap checks failed
 [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
 [NODE_NAME] stopping ...
 [NODE_NAME] stopped

解法:

修改发现种子行中的存档/etc/elasticsearch/elasticsearch.yml

discovery.seed_hosts: ["127.0.0.1", "[::1]"]

完成。

在 Windows 服务器 2012 上为我解决了 Elasticsearch 7.1.1 在 C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml 中添加以下配置:

http.host: 0.0.0.0