內容串流

內容串流是隨請求傳遞至 Solr 的大量資料。

當使用基於路徑的 URL 存取 Solr RequestHandler 時,包含請求參數的 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

偵錯請求

隱含的「dump」RequestHandler(請參閱隱含請求處理程式)只會使用指定的寫入器類型 wt 輸出 Solr QueryRequest 的內容。這是一個有用的工具,可協助了解 RequestHandler 可用的串流。