0

这是我第一次使用 Python 和 Solr。我在 GCE 上的 tomcat 中设置了我的 Solr 实例。我正在尝试使用 PySolr 从我的 Python 代码连接到它。但是,我不确定如何通过 PySolr 发送身份验证参数。

这是我得到的例外:

   solr = pysolr.Solr('http://MY INSTANCE IP/solr/News', timeout=10)
Apache Tomcat/7.0.28 - 错误报告

HTTP 状态 401 -

类型状态报告

信息

描述该请求需要 HTTP 身份验证 ()。

Apache Tomcat/7.0.28

请指教。

4

2 回答 2

2
solr = pysolr.Solr('http://user:pass@IP:8983/solr/')

这就是你所需要的...

于 2015-02-02T18:08:05.323 回答
2

您可以将 Solr 身份验证作为 Solr 连接参数的一部分传递。

您在 pySolr 中没有关于如何执行身份验证的适当文档。由于 pySolr 在内部使用请求进行身份验证,因此您可以在请求中遵循身份验证。 这里还有一个关于自定义身份验证的小例子。

在基本身份验证的情况下,您可以将其用作

    solr = pysolr.Solr('http://IP:8983/solr/collection',auth=('username','password'))

或者

    from requests.auth import HTTPBasicAuth
    solr = pysolr.Solr('http://IP:8983/solr/collection',auth=HTTPBasicAuth('username','password'))

这是正确的身份验证方式。不建议将用户名和密码作为 URL 的一部分传递,因为如果@'用于其中任何一个可能会在身份验证中产生问题,它可能会产生问题。参考这个 GitHub 问题

于 2019-08-13T10:59:31.613 回答