内容流
内容流是与请求一起传递给 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.url
和stream.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 可以使用哪些流。