我有一个Elasticsearch的默认安装,我试图从第三方服务器查询。但是,似乎默认情况下会被阻止。
是否有人能告诉我如何配置Elasticsearch以便我可以从其他服务器查询?
答案 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。
可能阻止您访问远程系统的事情(您可能知道这些):
9200
9200
最好的猜测?检查您是否可以从远程主机连接到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