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

从2.0版本开始,Elasticsearch 默认情况下只侦听 localhost,但是我想在 localhost 之外发出请求。

例如,允许这样的请求:

http://localhost:9200/

但事实并非如此:

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

谢谢你的帮助。

112984 次浏览

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

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

Another option is to provide the settings externally either using the ES_JAVA_OPTS or as parameters to the elasticsearch command, for example:

$ elasticsearch -Des.network.host=10.0.0.4

另一个选项是设置 es.default。用前缀代替 es。前缀,这意味着只有在配置文件中未显式设置时才使用默认设置。

Another option is to use the ${...} notation within the configuration file which will resolve to an environment setting, for example:

{
"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: 0.0.0.0

config/elasticsearch.yml中,把 network.host: 0.0.0.0写成@arsent 说的那样。 还要为 ElasticSearch 端口(9200ByDefault)在防火墙中添加入站规则。

它在 ElasticSearch 2.3.0版本中工作

正如@arsent 提到的,将 ip 地址添加到配置文件:

sudo nano /etc/elasticsearch/elasticsearch.yml

Jay 还补充了一个重要的观点——如果你正在使用防火墙,记得添加一个允许该端口流量的规则。

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

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

用主服务器 IP 地址替换 xxx.xxx.xxx,用在 config/elasticsearch.yml中配置的端口替换 zzzz

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

要测试它,请将 SSH 连接到您的主服务器,并使用正确的端口 ping ES ip,以查看是否得到响应:

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

您还可以通过使用浏览器尝试从其他 IP 访问 ES。

一篇优秀的文章展示了如何在 DigitalOcean 上设置 Ubuntu 上的 ES

默认情况下,http 传输和内部 elasticsearch 传输只监听本地主机。 If you want to access Elasticsearch from the host other than localhost then try adding following configurations in 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允许从网络中的任何主机访问。

In /etc/elasticsearch/elasticsearch.yml:

network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0

在/etc/elasticsearch/elasticsearch.yml 中设置以下值:

network.host: [ localhost, _site_ ]

此选项允许您从本地主机和本地网络上的所有计算机(192.168.X.X)访问,但不能从外部访问。
阅读更多关于这个和其他选项的文档

在两个地方用 0.0.0.0替换 localhost。

  1. 转到 /etc/elasticsearch/elasticsearch.yml。查找 Network.host中的值并将其改为 0.0.0.0

  2. 如果您正在使用 Kibana.Goto/etc/kibana/kibana.yml,这是步骤。请在 server.host中查找值并将其更改为 0.0.0.0

现在您可以使用 IP 地址和主机进行远程访问。

在安装了 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

除了设定 network.host : 0.0.0.0

there might be need to set following params

node.name: elasticsearch-node-1


cluster.initial_master_nodes: ["elasticsearch-node-1"]

所有设置进入 elasticsearch/elasticsearch.yml

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

Some time you might need to Enable 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

使用 Windows 10和独立的 Elasticsearch 7,把它放到 Elasticsearch.yml 中可以解决这个问题:

Host: 0.0.0.0 Type: single-node 类型: 单节点

在弹性搜索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

我的安装程序是 Kibana On windows 和 ES On Ubuntu,我无法通过改变只有 network.host访问

关于 ElasticSearch-7.10-1以及:

network.host: 0.0.0.0

我还得加上

transport.host: localhost

否则,我无法在同一个无线网络内访问它。

在我的服务器 ubuntu 22.04中,它需要如下:

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