如何在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.yml
中config/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版本中工作