尝试将数据添加到 solr 时使用 pysolr 出现 400 错误
Using pysolr getting 400 error when trying to add data to solr
使用 pysolr 尝试使用 Python3.9 将文档添加到 solr,即使只有 1 或 2 个字段也低于错误 400。
我在这里使用的字段是动态字段。
连接到 solr 没有问题。
#/usr/bin/python
import pysolr
solr = pysolr.Solr('http://localhost:8080/solr/', always_commit=True)
if solr.ping():
print('connection successful')
docs = [{'id':'123c', 's_chan_name': 'TV-201'}]
solr.add(docs)
res = solr.search('123c')
print(res)
出现以下错误:
connection successful
Traceback (most recent call last):
File "/tmp/test-solr.py", line 8, in <module>
solr.add(docs)
File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 1042, in add
return self._update( File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 568, in
_update
return self._send_request( File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 463, in
_send_request
raise SolrError(error_message % (resp.status_code, solr_message))
pysolr.SolrError: Solr responded with an error (HTTP 400): [Reason: None]
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 400 Unexpected character '[' (code 91) in prolog;
expected '<' at [row,col {unknown-source}]: [1,1]</title>
</head><body><h2>HTTP ERROR 400</h2><p>Problem accessing /solr/update/.
Reason:<pre> Unexpected character '[' (code 91) in prolog;
expected '<' at [row,col {unknown-source}]: [1,1]</pre>
</p><hr><a href="http://eclipse.org/jetty">
Powered by Jetty://9.4.15.v20190215</a><hr/></body></html>
solr.add method supports only one attribute
docs = {'id':'123c', 's_chan_name': 'TV-201'}
solr.add(docs)
不适合迭代。
docs = [{'id':'123c', 's_chan_name': 'TV-201'}]
solr.add_many(docs)
它会起作用
我建议您查看调试日志(这可能需要您使用 logging.basicConfig()
来启用它们)并测试您自己使用的 URLs。根据您的 Solr 配置,您的 Solr URL 可能需要在最后有核心(例如 http://localhost:8983/solr/mycore
)。
总的来说,我们得到的大多数类似这样的报告都被证明是关于某人如何配置 Solr 的奇怪之处。除了调试日志记录之外,我强烈建议查看测试套件,因为它可以完成 运行 Solr 所需的一切,并且可以作为比较的方便点:
使用 pysolr 尝试使用 Python3.9 将文档添加到 solr,即使只有 1 或 2 个字段也低于错误 400。 我在这里使用的字段是动态字段。 连接到 solr 没有问题。
#/usr/bin/python
import pysolr
solr = pysolr.Solr('http://localhost:8080/solr/', always_commit=True)
if solr.ping():
print('connection successful')
docs = [{'id':'123c', 's_chan_name': 'TV-201'}]
solr.add(docs)
res = solr.search('123c')
print(res)
出现以下错误:
connection successful
Traceback (most recent call last):
File "/tmp/test-solr.py", line 8, in <module>
solr.add(docs)
File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 1042, in add
return self._update( File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 568, in
_update
return self._send_request( File "/usr/local/lib/python3.9/site-packages/pysolr.py", line 463, in
_send_request
raise SolrError(error_message % (resp.status_code, solr_message))
pysolr.SolrError: Solr responded with an error (HTTP 400): [Reason: None]
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 400 Unexpected character '[' (code 91) in prolog;
expected '<' at [row,col {unknown-source}]: [1,1]</title>
</head><body><h2>HTTP ERROR 400</h2><p>Problem accessing /solr/update/.
Reason:<pre> Unexpected character '[' (code 91) in prolog;
expected '<' at [row,col {unknown-source}]: [1,1]</pre>
</p><hr><a href="http://eclipse.org/jetty">
Powered by Jetty://9.4.15.v20190215</a><hr/></body></html>
solr.add method supports only one attribute
docs = {'id':'123c', 's_chan_name': 'TV-201'}
solr.add(docs)
不适合迭代。
docs = [{'id':'123c', 's_chan_name': 'TV-201'}]
solr.add_many(docs)
它会起作用
我建议您查看调试日志(这可能需要您使用 logging.basicConfig()
来启用它们)并测试您自己使用的 URLs。根据您的 Solr 配置,您的 Solr URL 可能需要在最后有核心(例如 http://localhost:8983/solr/mycore
)。
总的来说,我们得到的大多数类似这样的报告都被证明是关于某人如何配置 Solr 的奇怪之处。除了调试日志记录之外,我强烈建议查看测试套件,因为它可以完成 运行 Solr 所需的一切,并且可以作为比较的方便点: