ES 不监听外部请求

ES not listening to external requests

我有一个 e2 ubuntu 实例 运行ning elasticsearch,虽然它在本地工作正常,但我无法使用 curl http://ipaddress:9200/ 从 windows 电脑连接(错误是 "unable to connect to the remote server").

我在同一个 ubuntu 实例上设置了 Apache,并且 curl http://ipaddress:80/ 在同一个 windows 机器上工作,而且我可以毫无问题地 ping 实例。 我的亚马逊安全组允许从所有 IP 地址到所有端口的 tcp 访问。

我认为这是一个 ES 配置问题,尽管我添加到 elasticsearch.yml 的唯一行是:

http.cors.enabled: true
http.cors.allow-origin: "*"

当我 运行 netstat 时,我注意到一些奇怪的事情,端口 9200 和 9300(ES 端口)的本地地址中有一个 1 - 这会阻止我的外部请求吗?如果是,我该怎么办改变这个?

   ubuntu@ESServer$ netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0    448 (AWS PRIVATE IP):22     (MY IP):63572           ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:9200                :::*                    LISTEN
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
tcp6       0      0 ::1:9300                :::*                    LISTEN
tcp6       0      0 127.0.0.1:9300          :::*                    LISTEN

看来你的elasticsearch进程是绑定到localhost的。尝试 运行 像这样:

bin/elasticsearch --network.host _non_loopback_

从 2.0 开始,elasticsearch 绑定到本地主机。因此您无法访问它。

此更改背后的原因在 this blog post

中进行了解释