11

我已在带有 Windows Server 2012 R2 的 Azure VM 中将 Elastic Search 2.3.0 设置为服务。我可以使用从服务器内部访问弹性搜索实例

http://localhost:9200

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

我尝试了什么?

  • 只是为了测试,我已经让虚拟机在虚拟网络之外可用。
  • 在 Windows 防火墙设置中打开端口 9200 作为入站流量规则
  • 在 Azure 门户设置中添加了一个端点,打开端口 9200

也尝试使用 VM Classic 进行此操作。

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

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

我在弹性搜索日志中找不到任何内容。在浏览器 (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
4

5 回答 5

27

从 ES 2.0 开始,elasticsearch 进程只绑定到 localhost,这就解释了为什么可以从内部查询 ES 而不能从外部查询。

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

network.host: 0.0.0.0
于 2016-04-04T08:57:35.720 回答
9

我有同样的情况。在日志中查找

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]"]

完毕。

于 2019-04-25T23:56:43.637 回答
2

请注意,对我来说,只有在设置后才能取得成功

http.host: 0.0.0.0

代替

http.host: "localhost"
于 2018-05-31T15:10:50.720 回答
2

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

例如。

network.host: [_local_, _site_]

这对我有用。

于 2016-04-04T09:38:15.467 回答
1

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

http.host: 0.0.0.0
于 2019-06-07T15:18:11.063 回答