Solr內容流

2018-11-20 13:54 更新

內容流是通過對 Solr 的請求傳遞的大容量數(shù)據(jù)。

當使用基于路徑的 URL 訪問 Solr RequestHandler 時,包含請求參數(shù)的 SolrQueryRequest 對象也可能包含包含請求的大容量數(shù)據(jù)的 ContentStreams 列表。(名稱 SolrQueryRequest 有點誤導:無論是查詢請求還是更新請求,都涉及所有請求。)

內容流來源

當前請求處理程序可以通過多種方式獲取內容流:

  • 對于多部分文件上傳,每個文件都以流的形式傳遞。
  • 對于內容類型不是 application/x-www-form-urlencoded 的 POST 請求,原始的 POST 主體將作為流傳遞。完整的 POST 主體被解析為參數(shù)并包含在 Solr 參數(shù)中。
  • 參數(shù) stream.body 的內容作為流傳遞。
  • 如果啟用了遠程流并在請求處理期間調用了 URL 內容,則每個參數(shù) stream.url 和 stream.file 參數(shù)的內容將作為流獲取并傳遞。

默認情況下,curl 發(fā)送一個 contentType="application/x-www-form-urlencoded" 頭。如果您需要測試 SolrContentHeader 內容流,則需要使用 curl -H 標志來設置內容類型。

使用 RemoteStreaming

通過遠程流傳輸,您可以將 URL 的內容作為流發(fā)送到給定的 SolrRequestHandler。您可以使用遠程流發(fā)送遠程或本地文件到更新插件。

默認情況下禁用遠程流。在生產環(huán)境中不建議啟用它,但是在您與不可信的遠程客戶端之間不需要額外的安全性。

*** WARNING ***
在啟用遠程流處理之前, 應確保系統(tǒng)已啟用身份驗證。
<requestParsers enableRemoteStreaming="false"...>

如果未在 solrconfig. xml 中指定 enableRemoteStreaming,則默認行為是不允許遠程流 (即 enableRemoteStreaming = "false")。

遠程流也可以通過 Config API 啟用,如下所示:

curl -d '
{
  "set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}
}
' http://localhost:8983/solr/techproducts/config -H 'Content-type:application/json'

注意:如果使用 enableRemoteStreaming = "true",請注意,這允許任何人向任何 URL 或本地文件發(fā)送請求。如果啟用了 DumpRequestHandler,它將允許任何人查看您系統(tǒng)上的任何文件。

調試請求

隱式“轉儲” RequestHandler(請參閱 Implicit RequestHandlers)只是使用指定的編寫器類型 wt 來輸出 SolrQueryRequest 的內容。這是一個有用的工具,有助于了解哪些流可用于 RequestHandlers。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號