【问题标题】:"Failed to establish a new connection" when trying to access Elasticsearch Cloud with elasticsearch-dsl Python package尝试使用 elasticsearch-dsl Python 包访问 Elasticsearch Cloud 时出现“无法建立新连接”
【发布时间】:2019-10-17 08:43:25
【问题描述】:

我正在试验 Elasticsearch 并使用 elasticsearch-dsl Python 包索引一些 Django 数据。

我创建了一个相对基本的测试,search.py,但是当我尝试索引任何数据时收到连接错误。

from elasticsearch_dsl.connections import connections
from elasticsearch_dsl import Document, Text
from elasticsearch.helpers import bulk
from elasticsearch import Elasticsearch

from . import models


connections.create_connection(hosts=['ELASTICSEARCH_ENDPOINT_URL'],
                              http_auth='USERNAME:PASSWORD')


class MyIndex(Document):
    title = Text()
    description = Text()

    class Index:
        name = 'my-index'


def bulk_indexing():
    MyIndex.init()
    es = Elasticsearch()
    bulk(client=es, actions=(a.indexing() for a in models.MyModel.objects.all().iterator()))

当我运行bulk_indexing() 时,出现以下错误:

elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x1282266d8>: Failed to establish a new connection: [Errno 61] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x1282266d8>: Failed to establish a new connection: [Errno 61] Connection refused)

我怀疑语法有误,或者我在创建连接时遗漏了一些凭据,但我找不到任何进一步的信息。

我正在使用通过 Elastic Cloud 部署的 Elasticsearch v7.4.0。当我通过浏览器访问 URL 时,我可以连接。

【问题讨论】:

    标签: python django elasticsearch elasticsearch-dsl elasticsearch-dsl-py


    【解决方案1】:

    为什么不简单地使用您的 Cloud ID(可以在 ES Cloud 控制台中找到)?

    from elasticsearch import Elasticsearch
    es = Elasticsearch(cloud_id="<some_long_cloud_id>", http_auth=('USERNAME','PASSWORD'))
    

    【讨论】:

    • MyIndex 类继承自 elasticsearch_dsl.Document,它希望通过 create_connection() 创建一个连接,否则我得到一个 KeyError。也就是说,我在您提到的bulk_indexing() 方法中添加了它,它起作用了(谢谢)。但是,我仍然很困惑为什么最初的方法不起作用。我现在定义了我的端点和凭据两次,其中只有一个有效。理想情况下,我想清理它。 ://
    • 您可以将相同的参数传递给create_connection 调用并在bulk_indexing 函数中丢弃es = Elasticsearch()
    • 是的,这行得通。我之前曾尝试过,但并非没有删除另一位。谢谢。
    猜你喜欢
    • 2020-05-09
    • 2020-02-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2022-12-22
    • 2017-10-05
    • 2011-07-15
    相关资源
    最近更新 更多