内容流

内容流是通过请求传递给 Solr 的批量数据。

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

内容流来源

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

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

  • 对于内容类型不是 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

调试请求

隐式“转储”RequestHandler(请参阅 隐式 Request Handler)仅使用指定的编写器类型 wt 输出 Solr QueryRequest 的内容。这是一个有用的工具,有助于了解 RequestHandler 可用的流。