提问人:beta-developper 提问时间:11/2/2018 更新时间:11/2/2018 访问量:4920
Solr HTTP Api - 响应状态
Solr HTTP Api - response status
问:
当通过他的HTTP Api使用SOLR时,他使用一个名为的对象进行响应,他将响应的状态放在其中responseHeader
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">13</int>
<!-- ... -->
</lst>
<!-- ... -->
</response>
我的第一个问题:status 属性的可能值是什么?它们的含义是什么?我知道该值意味着调用成功。0
我的第二个问题:通常,Solr 会以 200 代码响应成功呼叫。我们是否可以得到一个不同的(如果出现错误)并且仍然得到 200 的 http 响应代码?status
0
我使用SOLR 4.6
注意:我问了这些问题,因为我的 SOLR 没有索引集合的索姆,尽管他没有出现任何错误并且响应代码是 200!
谢谢
答:
状态代码通常对应于返回的 HTTP 代码,但 200 返回为 0。当SolrException在Solr内部抛出SolrException时,这将作为数字代码实现。不久前,当 solr-user 邮件列表上有人问这个问题时,Erik Hatcher 给出了以下答案:
是否有对此状态代码的引用?
只是源代码。SolrCore#setResponseHeaderValues,它主要使用 SolrException 中指定的代码:
BAD_REQUEST( 400 ), UNAUTHORIZED( 401 ), // not currently used FORBIDDEN( 403 ), NOT_FOUND( 404 ), SERVER_ERROR( 500 ), SERVICE_UNAVAILABLE( 503 ), UNKNOWN(0);
您可能可以假设 http 错误代码在大多数情况下都会与该值匹配,但肯定有例外 - 例如,如果 HTTP 请求根本无法到达 Solr,并且错误只是由 jetty 返回(如果安装严重无聊,或者可能如果您尝试访问 /solr 以外的内容)。status
在您的示例中,请求可以完全正常,即使该操作在将数据导入集合时不会触发任何内容。如果您的导入查询最终出现在 0 个文档中,则这不是错误 - 如果导入开始(导入通常是异步操作),这仍然是一个有效且正常的请求,即使后来的最终结果无效。
最好尝试了解导入失败的原因(并为此使用一个单独的问题,其中包含有关您如何尝试索引、日志中的任何错误表示的内容(您可以在 Web 界面中的“日志记录”下调整日志级别)以及您期望的结果的所有相关详细信息), 而不是在响应中查看字段。status
评论