从v2.0开始,Elasticsearch默认只在localhost上侦听,但我想在localhost之外发出请求 .
例如,允许这样的请求:
http://localhost:9200/
但这不是:
http://server_name:9200/ (来自服务器外部,例如:同一LAN中的本地计算机) .
http://server_name:9200/
谢谢你的帮助 .
在 config/elasticsearch.yml 中
config/elasticsearch.yml
network.host: 0.0.0.0
将elasticsearch.yml文件重命名为config文件夹中的elasticsearch.json并添加:
{ "network" : { "host" : "10.0.0.4" } }
另一种选择是使用ES_JAVA_OPTS或作为elasticsearch命令的参数在外部提供设置,例如:
$ elasticsearch -Des.network.host=10.0.0.4
另一种选择是设置es.default . 前缀而不是es . prefix,表示只有在配置文件中未明确设置时才会使用默认设置 .
另一种选择是在配置文件中使用 ${...} 表示法,该表示法将解析为环境设置,例如:
${...}
{ "network" : { "host" : "${ES_NET_HOST}" } }
可以使用系统属性在外部设置配置文件的位置:
$ elasticsearch -Des.config=/path/to/config/file
欲了解更多信息,请查看https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html
默认情况下,http传输和内部elasticsearch传输仅侦听localhost . 如果要从localhost以外的主机访问Elasticsearch,请尝试在 config/elasticsearch.yml 中添加以下配置 .
transport.host: localhost transport.tcp.port: 9300 http.port: 9200 network.host: 0.0.0.0
这里,network.host为0.0.0.0允许从网络中的任何主机进行访问 .
正如@arsent所提到的,将ip地址添加到配置文件中:
sudo nano /etc/elasticsearch/elasticsearch.yml
Jay还添加了一个重要的观点 - 如果您使用的是防火墙,请记住添加允许流量到该端口的规则 .
如果要允许主服务器通过http访问ES,则添加允许仅从该特定地址访问的规则 . 例如,假设您使用的是ufw,则运行此命令以添加您的端口:
sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz
将xxx.xxx.xxx.xxx替换为您的主服务器IP地址,将zzzz替换为您在 config/elasticsearch.yml 中配置的端口
建议使用自定义端口,而不是保留默认值9200
要测试它,请通过SSH连接到主服务器并使用正确的端口ping ES ip以查看是否收到响应:
curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz'
您还可以通过浏览器尝试验证其他IP无法访问ES .
有an excellent article显示了如何在DigitalOcean上的Ubuntu上设置ES
在 /etc/elasticsearch/elasticsearch.yml :
/etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0 network.bind_host: 0.0.0.0 network.publish_host: 0.0.0.0
在config / elasticsearch.yml中,将network.host:0.0.0.0作为@arsent表示 . 并在防火墙中为您的ElasticSearch端口添加入站规则(9200 ByDefault) . 它适用于ElasticSearch版本2.3.0
6 回答
在
config/elasticsearch.yml
中将elasticsearch.yml文件重命名为config文件夹中的elasticsearch.json并添加:
另一种选择是使用ES_JAVA_OPTS或作为elasticsearch命令的参数在外部提供设置,例如:
$ elasticsearch -Des.network.host=10.0.0.4
另一种选择是设置es.default . 前缀而不是es . prefix,表示只有在配置文件中未明确设置时才会使用默认设置 .
另一种选择是在配置文件中使用
${...}
表示法,该表示法将解析为环境设置,例如:可以使用系统属性在外部设置配置文件的位置:
$ elasticsearch -Des.config=/path/to/config/file
欲了解更多信息,请查看https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html
默认情况下,http传输和内部elasticsearch传输仅侦听localhost . 如果要从localhost以外的主机访问Elasticsearch,请尝试在 config/elasticsearch.yml 中添加以下配置 .
这里,network.host为0.0.0.0允许从网络中的任何主机进行访问 .
正如@arsent所提到的,将ip地址添加到配置文件中:
Jay还添加了一个重要的观点 - 如果您使用的是防火墙,请记住添加允许流量到该端口的规则 .
如果要允许主服务器通过http访问ES,则添加允许仅从该特定地址访问的规则 . 例如,假设您使用的是ufw,则运行此命令以添加您的端口:
将xxx.xxx.xxx.xxx替换为您的主服务器IP地址,将zzzz替换为您在
config/elasticsearch.yml
中配置的端口建议使用自定义端口,而不是保留默认值9200
要测试它,请通过SSH连接到主服务器并使用正确的端口ping ES ip以查看是否收到响应:
您还可以通过浏览器尝试验证其他IP无法访问ES .
有an excellent article显示了如何在DigitalOcean上的Ubuntu上设置ES
在
/etc/elasticsearch/elasticsearch.yml
:在config / elasticsearch.yml中,将network.host:0.0.0.0作为@arsent表示 . 并在防火墙中为您的ElasticSearch端口添加入站规则(9200 ByDefault) . 它适用于ElasticSearch版本2.3.0