«Не удалось установить новое соединение» при попытке получить доступ к Elasticsearch Cloud с пакетом Pythonasticsearch-dsl - PullRequest
0 голосов
/ 17 октября 2019

Я экспериментирую с Elasticsearch и индексирую некоторые данные Django, используя пакет elasticsearch-dsl Python.

Я создал сравнительно простой тест 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)

Я подозреваю, что синтаксис неправильный или я пропускаю некоторыеучетные данные при создании соединения, но я не могу найти дополнительную информацию.

Я использую Elasticsearch v7.4.0, развернутый с использованием Elastic Cloud. Я могу подключиться, когда у меня есть доступ к URL через мой браузер.

1 Ответ

1 голос
/ 17 октября 2019

Почему бы просто не использовать ваш Cloud ID (который вы можете найти в консоли ES Cloud)?

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