从 v2.0 开始,Elasticsearch 默认情况下仅在本地主机上监听,但我想在本地主机之外发出请求。
例如,允许这样的请求:
http://localhost:9200/
但这不是:
http://server_name:9200/
(来自服务器外部,例如:同一 LAN 中的本地计算机)。
感谢您的帮助。
放入
/etc/elasticsearch/elasticsearch.yml
中
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0
默认情况下,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,允许网络内任何主机访问。
在 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]"]
** 更改配置后不要忘记重新启动。如果还是 Elasticsearch 没有重启检查日志
journalctl -xe
将config文件夹中的elasticsearch.yml文件重命名为elasticsearch.json并添加:
{
"network" : {
"host" : "10.0.0.4"
}
}
另一种选择是使用 ES_JAVA_OPTS 或作为 elasticsearch 命令的参数从外部提供设置,例如:
$ elasticsearch -Des.network.host=10.0.0.4
另一个选项是设置 es.default。前缀而不是 es。前缀,这意味着只有在配置文件中没有明确设置时才会使用默认设置。
另一种选择是在配置文件中使用
${...}
表示法,它将解析为环境设置,例如:
{
"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
在 /etc/elasticsearch/elasticsearch.yml 中设置以下值:
network.host: [ localhost, _site_ ]
此选项允许您从本地主机和本地网络 (192.168.X.X) 上的所有计算机进行访问,但不能从外部进行访问。
了解有关此选项和其他选项的更多信息,请阅读文档
正如 @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。
有 一篇很棒的文章 展示了如何在 DigitalOcean 上的 Ubuntu 上设置 ES
在安装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 作为远程计算机
在
/etc/elasticsearch/elasticsearch.yml
:
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
适用于 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
在两个地方将 localhost 替换为 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 地址和主机进行远程访问。
在
config/elasticsearch.yml
中,按照@arsent所说放入network.host: 0.0.0.0
。
并在防火墙中为您的 ElasticSearch 端口添加入站规则(默认为 9200)。
它在 ElasticSearch 版本 2.3.0 中有效
在我的服务器 ubuntu 22.04 中,它需要如下所示:
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0
除了设置
network.host : 0.0.0.0
可能需要设置以下参数
node.name: elasticsearch-node-1
cluster.initial_master_nodes: ["elasticsearch-node-1"]
所有设置进去
elasticsearch/elasticsearch.yml
使用 Windows 10 和独立的 Elasticsearch 7,将其放入 elasticsearch.yml 中解决问题:
网络主机:0.0.0.0 discovery.type:单节点
我的设置是Windows上的Kibana和Ubuntu上的ES,我无法仅通过更改来访问
network.host
对于 ElasticSearch-7.10-1 以及:
network.host: 0.0.0.0
我还得补充一下
transport.host: localhost
否则,我无法在同一个wifi网络中访问它。