私は Haystack を使用して、elasticsearch のインストールに接続して対話しています。Elasticsearch は、メインの Web サーバーとは別のボックスにインストールされます。
nginxを使用してelasticsearchボックスにHTTP認証を設定しました。これは、elasticsearch への不正アクセスを阻止するためです。
Haystack の設定は次のようになります。
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://USERNAME:PASSWORD@DOMAIN:PORT/',
'INDEX_NAME': 'haystack',
},
}
このセットアップでは、接続エラーが発生します。
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')))
HTTP 認証をオフにして、http://DOMAIN:PORT/
それに応じて URL を更新すると、問題なく接続されます。
Haystack (または elasticsearch-py ( http://www.elasticsearch.org/guide/en/elasticsearch/client/python-api/current/ ) ) が URL での HTTP 認証の使用を許可していないのでしょうか?これは Solr の問題であることに注意してください - Solr 認証 (Django Haystack を使用)