繁体   English   中英

允许远程访问Elasticsearch

[英]Allowing remote access to Elasticsearch

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

是否有人能够告诉我如何配置Elasticsearch以便我可以从其他服务器查询它?

在config / elasticsearch.yml中,输入network.host:0.0.0.0。 并在防火墙中为您的ElasticSearch端口添加入站规则(9200 ByDefault)。 它适用于ElasticSearch版本2.3.0

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


正如Damien在他的回答中提到的,默认情况下ES允许所有访问端口9200 实际上,您需要使用外部工具为ES资源提供身份验证 - 例如webapp前端或仅启用Basic Auth的简单nginx。

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

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

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

如果在没有任何配置更改的情况下安装并运行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

注意:在生产环境中,不鼓励公共访问。 应优先考虑限制访问。

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

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

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

network.host: 0.0.0.0
http.port: 9200

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

network.host: 0.0.0.0
http.port: 9200-9202

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM