从v2.0开始Elasticsearch默认只在localhost上侦听,但我想在localhost之外发出请求。
例如,允许这样的请求:
http://localhost:9200/
但这不是:
http://server_name:9200/
(来自服务器外部,例如:同一局域网中的本地计算机)。
感谢您的帮助。
答案 0 :(得分:129)
在config/elasticsearch.yml
put
network.host: 0.0.0.0
答案 1 :(得分:21)
默认情况下,http transport和internal elasticsearch transport仅侦听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允许从网络中的任何主机进行访问。
答案 2 :(得分:18)
将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
答案 3 :(得分:5)
正如@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
答案 4 :(得分:5)
在 Elastic Search 7.0 中更新 /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
另外:
discovery.seed_hosts: ["0.0.0.0", "[::0]"]
** 更改配置后不要忘记重新启动。如果仍然没有重新启动弹性搜索检查日志 journalctl -xe
答案 5 :(得分:1)
在/etc/elasticsearch/elasticsearch.yml
:
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
答案 6 :(得分:1)
在/etc/elasticsearch/elasticsearch.yml中,设置以下值:
network.host: [ localhost, _site_ ]
此选项允许您从本地主机和本地网络(192.168.X.X)上的所有计算机进行访问,但不能从外部进行访问。
Read more about this and other options read the documentation
答案 7 :(得分:1)
在两个地方用 0.0.0.0 替换本地主机。
转到/etc/elasticsearch/elasticsearch.yml
。在 network.host 中查找值并将其更改为 0.0.0.0
如果您正在使用Kibana,则此步骤。转到/etc/kibana/kibana.yml
。在 server.host 中查找值并将其更改为 0.0.0.0
现在,您可以使用IP地址和主机访问远程访问。
答案 8 :(得分:1)
在装有elasticsearch的远程计算机中,只需在/etc/elasticsearch/elasticsearch.yml
中添加以下两个配置
network.host: xx.xx.xx.xx #remote elastic machine's internal IP
discovery.type: single-node
在elasticsearch 6.8.3和 AWS EC2 Linux AMI作为远程计算机
答案 9 :(得分:1)
对于 ElasticSearch 7.8 及更高版本
检查您是否在单个节点上。 添加以下行
cluster.initial_master_nodes: node-1
要从另一台计算机或应用程序访问Elasticsearch服务器,请对该节点的C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml file:
添加以下行
network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0
有时您可能需要启用CORS
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length
这是我的完整yml文件
bootstrap.memory_lock: false
cluster.name: elasticsearch
http.port: 9200
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
cluster.initial_master_nodes: node-1
node.name: ITDEV
path.data: C:\ProgramData\Elastic\Elasticsearch\data
path.logs: C:\ProgramData\Elastic\Elasticsearch\logs
transport.tcp.port: 9300
xpack.license.self_generated.type: basic
xpack.security.enabled: false
network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length
答案 10 :(得分:0)
在config / elasticsearch.yml中,将network.host:0.0.0.0作为@arsent说。 并在防火墙中为您的ElasticSearch端口添加入站规则(9200 ByDefault)。 它适用于ElasticSearch版本2.3.0
答案 11 :(得分:0)
除了设置network.host : 0.0.0.0
可能需要设置以下参数
node.name: elasticsearch-node-1
cluster.initial_master_nodes: ["elasticsearch-node-1"]
所有设置都进入elasticsearch/elasticsearch.yml
答案 12 :(得分:0)
使用Windows 10和独立的Elasticsearch 7,将其放在elasticsearch.yml中可以解决此问题:
network.host:0.0.0.0 Discovery.type:单节点
答案 13 :(得分:0)
我的设置是 Kibana On windows 和 ES on Ubuntu,仅更改 network.host
无法访问
对于 ElasticSearch-7.10-1 连同:
network.host: 0.0.0.0
我还必须添加
transport.host: localhost
否则,我无法在同一个 wifi 网络中访问它。