2

私は 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 を使用)

4

1 に答える 1

5

同じ問題を抱えている他の人については、kwargs を config に追加してください:

'KWARGS': {
    'port': parsed.port,
    'http_auth': (parsed.username, parsed.password),
}

参照: https://github.com/toastdriven/django-haystack/issues/1046

于 2014-12-28T16:06:08.277 に答える