如何在Elasticsearch 2.0中启用远程访问/请求?

从v2.0开始,Elasticsearch默认只在本地主机上侦听,但是我想在本地主机之外发出请求。

例如,这样的请求是允许的:

http://localhost:9200/

但是这不是:

http://server_name:9200/ (来自服务器外部,例如:同一局域网中的本地计算机)。

谢谢你的帮助。

将elasticsearch.yml文件重命名为configsearch文件夹中的elasticsearch.json,并添加:

 { "network" : { "host" : "10.0.0.4" } } 

另一个选项是使用ES_JAVA_OPTS在外部提供设置,或者作为elasticsearch命令的参数,例如:

$ elasticsearch -Des.network.host=10.0.0.4

另一个选项是设置es.default。 前缀代替es。 前缀,这意味着只有在configuration文件中没有明确设置的情况下才会使用默认设置。

另一种select是在configuration文件中使用${...}表示法,该表示法将parsing为环境设置,例如:

 { "network" : { "host" : "${ES_NET_HOST}" } } 

configuration文件的位置可以使用系统属性在外部设置:

$ elasticsearch -Des.config=/path/to/config/file

欲了解更多信息,请查看https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html

config/elasticsearch.yml

 network.host: 0.0.0.0 

默认情况下,http传输和内部elasticsearch传输只侦听localhost。 如果你想从本地主机以外的主机访问Elasticsearch,那么尝试在config / elasticsearch.yml中添加以下configuration。

 transport.host: localhost transport.tcp.port: 9300 http.port: 9200 network.host: 0.0.0.0 

在这里,network.host为0.0.0.0允许从networking内的任何主机访问。

正如@arsent提到的那样,将ip地址添加到configuration文件中:

 sudo nano /etc/elasticsearch/elasticsearch.yml 

Jay还增加了一个重要的观点 – 如果您使用的是防火墙,请记住添加允许stream量到该端口的规则。

如果您希望允许主服务器通过http访问ES,则添加一个允许仅从该特定地址访问的规则。 例如,假设你正在使用ufw,那么运行这个命令来添加你的端口:

 sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz 

将xxx.xxx.xxx.xxxreplace为您的主服务器IP地址和zzzz,并使用您在config/elasticsearch.ymlconfig/elasticsearch.yml的端口

build议使用自定义端口,不要保持默认的9200

要testing它,SSH到您的主服务器,并用正确的端口ping ES IP,看看你是否得到了回应:

 curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz' 

您也可以通过您的浏览器来validationES是否无法从其他IP访问。

有一篇很好的文章 ,展示了如何在DigitalOcean上的Ubuntu上安装ES

在config / elasticsearch.yml中,以@arsent表示将network.host:0.0.0.0。 并且为ElasticSearch端口添join站规则(9200 ByDefault)。 它在ElasticSearch 2.3.0版本中工作