繁体   English   中英

如何从外部访问存储在Docker容器中的Elasticsearch?

[英]How to access an Elasticsearch stored in a Docker container from outside?

我目前正在Docker容器中运行Elasticsearch(ES)5.5。 (见下文)

curl -XGET 'localhost:9200'
{
  "name" : "THbbezM",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "CtYdgNUzQrS5YRTRT7xNJw",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

我已将elasticsearch.yml文件更改为如下所示:

http.host: 0.0.0.0

# Uncomment the following lines for a production cluster deployment
#transport.host: 0.0.0.0
#discovery.zen.minimum_master_nodes: 1

network.host: 0.0.0.0
http.port: 9200

我目前可以通过curl -XGET命令获取索引。 这里的问题是,我希望能够使用它的Ip地址而不是从我的机器(Mac OS X)开始的'localhost:9200'设置向该ES实例发出http请求。

所以,我已经尝试过了:

1)我尝试在Postman中进行以下操作:

Could not get any response
There was an error connecting to X.X.X.X:9200/.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Client certificates are required for this server:
Fix this by adding client certificates in Settings > Certificates
Request timeout:
Change request timeout in Settings > General

2)我也在Sense(Chrome插件)中尝试过:

Request failed to get to the server (status code: 0):

3)从机器的终端运行卷发也不会这样做。

我在这里想念什么?

Docker for Mac提供了可以使用的DNS名称:

docker.for.mac.localhost

您应该使用YML文件中容器名称下指定的值连接到集群。 例:

services:
  elasticsearch:
    container_name: 'example_elasticsearch'
    image: 'docker.elastic.co/elasticsearch/elasticsearch:6.6.1'

在这种情况下,弹性搜索位于http:// example_elasticsearch:9200 请注意, example_elasticsearch是容器的名称,并且可以与计算机名或主机名相同的方式使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM