Používam Haystack na pripojenie a interakciu s inštaláciou elasticsearch.Elasticsearch je inštalovaný na inom poli ako hlavný webový server.
Nastavil som HTTP autentifikáciu na elasticsearch box pomocou nginx. Toto má zabrániť neoprávnenému prístupu k elastickému vyhľadávaniu.
Konfigurácia Haystack vyzerá takto:
HAYSTACK_CONNECTIONS = {
"default": {
"ENGINE": "haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine",
"URL": "http://USERNAME:PASSWORD@DOMAIN:PORT/",
"INDEX_NAME": "haystack",
},
}
S týmto nastavením mám chybu spojenia:
elasticsearch.exceptions.ConnectionError: ConnectionError(("Connection aborted.",
gaierror(-2, "Name or service not known"))) caused by: ProtocolError(("Connection
aborted.", gaierror(-2, "Name or service not known")))
Ak vypnem autentifikáciu HTTP a aktualizujem URL zodpovedajúcim spôsobom http://DOMAIN:PORT/
spája sa bez problémov.
Mohlo by byť, že Haystack (alebo elasticsearch-py (http://www.elasticsearch.org/guide/en/elasticsearch/client/python-api/current/) nepovoľuje použitie HTTP autentifikácie v URL? Všimol som si, že to je problém s Solrom - Solr autentifikácia (pomocou Django Haystack)
odpovede:
5 pre odpoveď č. 1Pre ostatných s rovnakým problémom pridajte kwargs do config:
"KWARGS": {
"port": parsed.port,
"http_auth": (parsed.username, parsed.password),
}
pozri: https://github.com/toastdriven/django-haystack/issues/1046