连接错误 Jupyter 和 Elasticsearch (Docker)

Connectionn error Jupyter and Elasticsearch (Docker)

我正在尝试在 Docker 个容器中建立从 Jupyter Notebook 到 Elasticsearch 的连接,但连接到同一网络(网桥)。

这是我的代码:

elastic_client = Elasticsearch(hosts=["http://localhost:9200/"], http_auth=('generator', 'generator'))
elastic_index='data_generator_nvdi_geoloc'

df_out = pandas.read_csv(local_destination_path)

我收到这个错误:

ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f7ada675710>: Failed to establish a new connection: [Errno 111] Connection refused))

我觉得可能是容器的问题,但是都是连接在同一个网络,不知道怎么解决。

您的问题是使用 localhost:9200 作为连接字符串。因为 ES 不是您的 Jupiter 容器中的“localhost”。每个容器都有自己的本地主机引用。您需要将连接字符串调整为 Docker 的 DNS 记录,以便 service/container 您在 docker-compose.yml 文件中设置的名称。根据您的评论,您应该使用 elasticsearch:9200 作为连接字符串。