內容串流
內容串流是隨請求傳遞至 Solr 的大量資料。
當使用基於路徑的 URL 存取 Solr RequestHandler 時,包含請求參數的 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
。
偵錯請求
隱含的「dump」RequestHandler(請參閱隱含請求處理程式)只會使用指定的寫入器類型 wt
輸出 Solr QueryRequest 的內容。這是一個有用的工具,可協助了解 RequestHandler 可用的串流。