5

我有一个默认安装的 Elasticsearch,我试图从第三方服务器查询。但是,似乎默认情况下这是被阻止的。

有人能告诉我如何配置 Elasticsearch 以便我可以从不同的服务器查询它吗?

4

5 回答 5

3

在 config/elasticsearch.yml 中,放入 network.host: 0.0.0.0。并且还在防火墙中为您的 ElasticSearch 端口(默认为 9200)添加入站规则。它在 ElasticSearch 2.3.0 版中工作

于 2016-05-05T09:52:54.143 回答
2

编辑:正如Sisso在下面的评论中提到的,Elasticsearch 2.0 至少默认绑定到 localhost。有关更多信息,请参阅https://www.elastic.co/guide/en/elasticsearch/reference/2.0/modules-network.html


正如Damien在他的回答中提到的,默认情况下 ES 允许所有访问 port 9200。实际上,您需要使用外部工具来为 ES 资源提供身份验证 - 类似于 webapp 前端或只是打开了基本身份验证的简单 nginx。

可以阻止您访问远程系统的事情(您可能知道这些):

  • 网络配置问题
  • ES 主机防火墙阻止端口上的传入请求9200
  • 远程主机防火墙阻止对 ES 主机和/或端口的传出请求9200
  • ES 配置为绑定到错误的 IP 地址(默认情况下,它绑定到所有可用的 IP)

最佳的揣测?检查您是否可以从远程主机连接到 ES 主机,然后检查两个系统上的防火墙。如果您无法进一步诊断,也许 ES 邮件列表(https://groups.google.com/forum/#!forum/elasticsearch)或 IRC 频道(Freenode 上的#elasticsearch)上的某个人可以提供帮助。

于 2013-08-29T15:53:22.257 回答
2

当 elasticsearch 安装并运行时,默认情况下没有任何配置更改,它仅绑定到 localhost。要远程访问 elasticsearch REST API 端点,必须在安装了 elasticsearch 的服务器上进行以下更改。

  • Elasticsearch 配置更改 根据 elasticsearch 文档中提供的指南更新 elasticsearch.yml 中的 network.host 属性 例如,要绑定到本地计算机上的所有 IPv4 地址,更改如下 network.host :0.0.0.0

  • 防火墙规则更新 更新 Linux 防火墙以允许访问端口 9200。请参阅您的 Linux 文档以将规则添加到防火墙。

例如,要允许访问 CentosOS 中的所有服务器(公共),请使用 firewall-cmd

sudo firewall-cmd --zone=public --permanent --add-port=9200/tcp
sudo firewall-cmd --reload

注意:不鼓励在生产环境中公开访问。应该首选受限访问。

于 2017-05-29T16:05:39.260 回答
1

默认情况下没有限制,ElasticSearch 在端口上公开一个标准的 HTTP API 9200

从您的第三方服务器,您是否能够curl http://es_hostname:9200/

于 2013-08-29T15:14:29.803 回答
1

要允许使用一个默认节点进行远程访问,settings\elasticsearch.yml应具有:

network.host: 0.0.0.0
http.port: 9200

我的情况我需要三个实例。对于每个实例,还必须声明使用的端口范围。

network.host: 0.0.0.0
http.port: 9200-9202
于 2016-05-24T23:43:28.697 回答