猿问

尝试使用 elasticsearch-dsl Python 包访问 Elasticsearch

我正在试验 Elasticsearch 并使用elasticsearch-dslPython 包索引一些 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 时,我可以连接。


绝地无双
浏览 164回答 1
1回答

慕田峪9158850

为什么不简单地使用您的 Cloud ID(您可以在 ES Cloud 控制台中找到)?from elasticsearch import Elasticsearches = Elasticsearch(cloud_id="<some_long_cloud_id>", http_auth=('USERNAME','PASSWORD'))
随时随地看视频慕课网APP

相关分类

Python
我要回答