允许远程访问Elasticsearch

时间:2013-08-28 22:29:27

标签: python security lucene debian elasticsearch

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

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

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

编辑:正如 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)上的某人可以提供帮助。

答案 2 :(得分: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

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

答案 3 :(得分:1)

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

从第三方服务器,您是否可以:curl http://es_hostname:9200/

答案 4 :(得分:1)

要允许使用一个默认节点进行远程访问,var newTodo = { complete : false, text: 'lorem ipsum test todo' }; //save $.post("/todos", newTodo, function(data){ alert(" success"); }); 应该具有:

settings\elasticsearch.yml

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

network.host: 0.0.0.0
http.port: 9200