内容流
内容流是通过请求传递给 Solr 的批量数据。
当使用基于路径的 URL 访问 Solr RequestHandlers 时,包含请求参数的 SolrQueryRequest
对象还可能包含一个 ContentStreams 列表,其中包含请求的批量数据。(SolrQueryRequest 名称有点误导性:它涉及所有请求,无论它是查询请求还是更新请求。)
内容流来源
目前,请求处理程序可以通过多种方式获取内容流
-
对于多部分文件上传,每个文件都作为流传递。
-
对于内容类型不是
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
。
调试请求
隐式“转储”RequestHandler(请参阅 隐式 Request Handler)仅使用指定的编写器类型 wt
输出 Solr QueryRequest 的内容。这是一个有用的工具,有助于了解 RequestHandler 可用的流。