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>
我的第一个问题:状态属性的可能值是什么?它们的含义是什么?我知道值0
代表调用成功
我的第二个问题:通常情况下,Solr 会返回 200 代码来表示调用成功。我们能否获得不同于 0
的 status
(以防出现错误)并且仍然获得 200 的 http 响应代码?
我用SOLR 4.6
注意:我问这些问题是因为我的 SOLR 没有索引一些集合,尽管他没有出现任何错误并且响应代码是 200!
谢谢
状态代码通常对应于返回的 HTTP 代码,除了 200 返回为 0。这是在 Solr 内部抛出 SolrException 时作为数字代码实现的。当不久前在 solr-user 邮件列表中询问时,following answer from Erik Hatcher was given:
Is there a reference to this status-codes?
只是源代码。 SolrCore#setResponseHeaderValues,主要使用 SolrException 中指定的代码:
BAD_REQUEST( 400 ),
UNAUTHORIZED( 401 ), // not currently used
FORBIDDEN( 403 ),
NOT_FOUND( 404 ),
SERVER_ERROR( 500 ),
SERVICE_UNAVAILABLE( 503 ),
UNKNOWN(0);
current version of SolrCore can be seen on Github.
您可能会假设 http 错误代码在大多数情况下会与 status
值匹配,但肯定有例外 - 例如,如果 HTTP 请求根本没有到达 Solr,并且错误只是由 jetty 返回(如果安装严重失败,或者如果您尝试访问 /solr 以外的内容)。
在您的示例中,即使在将数据导入集合时该操作未触发任何操作,请求也可以完美无缺。如果您的导入查询以 0 个文档结束,那不是错误 - 如果导入开始(导入通常是异步操作),那仍然是一个有效且正常的请求,即使稍后的最终结果无效.
最好尝试了解您的导入失败的原因(并为此使用一个单独的问题,其中包含有关您尝试建立索引的所有相关详细信息,日志中的任何错误说明(您可以调整Web 界面中 Logging 下的日志级别)以及您期望的结果),而不是查看响应中的 status
字段。
当通过他的 HTTP Api 使用 SOLR 时,他用一个名为 responseHeader
的对象进行响应,他将响应的状态放在其中
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">13</int>
<!-- ... -->
</lst>
<!-- ... -->
</response>
我的第一个问题:状态属性的可能值是什么?它们的含义是什么?我知道值0
代表调用成功
我的第二个问题:通常情况下,Solr 会返回 200 代码来表示调用成功。我们能否获得不同于 0
的 status
(以防出现错误)并且仍然获得 200 的 http 响应代码?
我用SOLR 4.6
注意:我问这些问题是因为我的 SOLR 没有索引一些集合,尽管他没有出现任何错误并且响应代码是 200!
谢谢
状态代码通常对应于返回的 HTTP 代码,除了 200 返回为 0。这是在 Solr 内部抛出 SolrException 时作为数字代码实现的。当不久前在 solr-user 邮件列表中询问时,following answer from Erik Hatcher was given:
Is there a reference to this status-codes?
只是源代码。 SolrCore#setResponseHeaderValues,主要使用 SolrException 中指定的代码:
BAD_REQUEST( 400 ), UNAUTHORIZED( 401 ), // not currently used FORBIDDEN( 403 ), NOT_FOUND( 404 ), SERVER_ERROR( 500 ), SERVICE_UNAVAILABLE( 503 ), UNKNOWN(0);
current version of SolrCore can be seen on Github.
您可能会假设 http 错误代码在大多数情况下会与 status
值匹配,但肯定有例外 - 例如,如果 HTTP 请求根本没有到达 Solr,并且错误只是由 jetty 返回(如果安装严重失败,或者如果您尝试访问 /solr 以外的内容)。
在您的示例中,即使在将数据导入集合时该操作未触发任何操作,请求也可以完美无缺。如果您的导入查询以 0 个文档结束,那不是错误 - 如果导入开始(导入通常是异步操作),那仍然是一个有效且正常的请求,即使稍后的最终结果无效.
最好尝试了解您的导入失败的原因(并为此使用一个单独的问题,其中包含有关您尝试建立索引的所有相关详细信息,日志中的任何错误说明(您可以调整Web 界面中 Logging 下的日志级别)以及您期望的结果),而不是查看响应中的 status
字段。