内容流

内容流是与请求一起传递给 Solr 的批量数据。

当使用基于路径的 URL 访问 Solr RequestHandlers 时,包含请求参数的 SolrQueryRequest 对象可能还包含一个 ContentStreams 列表,其中包含请求的批量数据。(名称 SolrQueryRequest 有点误导:它涉及所有请求,无论它是查询请求还是更新请求。)

内容流源

目前,请求处理程序可以通过多种方式获取内容流

  • 对于多部分文件上传,每个文件都作为流传递。

  • 对于 content-type 不是 application/x-www-form-urlencoded 的 POST 请求,原始 POST 正文将作为流传递。完整的 POST 正文将被解析为参数并包含在 Solr 参数中。

  • 参数 stream.body 的内容将作为流传递。需要 SOLR_ENABLE_STREAM_BODY=true

  • 每个 stream.urlstream.file 参数都将被解析/获取并作为流传递。需要 SOLR_ENABLE_REMOTE_STREAMING=true

默认情况下,curl 发送一个 contentType="application/x-www-form-urlencoded" 标头。如果您需要测试 SolrContentHeader 内容流,则需要使用 curl 的 -H 标志设置内容类型。

远程流式传输

远程流式传输允许您将 URL 的内容作为流发送到给定的 Solr RequestHandler。您可以使用远程流式传输将远程或本地文件发送到更新插件。

默认情况下禁用远程流式传输。在生产环境中,如果没有您和不受信任的远程客户端之间的额外安全性,则不建议启用它。

如果使用远程流式传输,请注意,这允许*任何人*将请求发送到任何 URL 或本地文件。使用DumpRequestHandler,任何人都可以查看 Solr 可以访问的内容。

使用以下环境变量启用它:SOLR_ENABLE_REMOTE_STREAMING=true

可以使用 gzip 压缩数据源,Solr 通常会检测到这一点。检测基于 Content-Encoding: gzip HTTP 标头的存在或文件以 .gz 或 .gzip 结尾。Gzip 不适用于 stream.body

调试请求

隐式的 "dump" RequestHandler(请参阅 隐式请求处理程序)只是使用指定的写入器类型 wt 输出 Solr QueryRequest 的内容。这是一个有用的工具,可帮助您了解 RequestHandlers 可以使用哪些流。