我正在使用 Haystack 与安装的 elasticsearch 进行连接和交互。Elasticsearch 安装在与主网络服务器不同的盒子上。
我已经使用 nginx 在弹性搜索框上设置了 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 身份验证并相应地更新 URL,http://DOMAIN:PORT/
则连接没有问题。
难道是Haystack(或elasticsearch-py(http://www.elasticsearch.org/guide/en/elasticsearch/client/python-api/current/)不允许在URL中使用HTTP身份验证?我注意这是 Solr 的问题 - Solr 身份验证(使用 Django Haystack)