Solr內(nèi)容流

2018-11-20 13:54 更新

內(nèi)容流是通過(guò)對(duì) Solr 的請(qǐng)求傳遞的大容量數(shù)據(jù)。

當(dāng)使用基于路徑的 URL 訪問(wèn) Solr RequestHandler 時(shí),包含請(qǐng)求參數(shù)的 SolrQueryRequest 對(duì)象也可能包含包含請(qǐng)求的大容量數(shù)據(jù)的 ContentStreams 列表。(名稱(chēng) SolrQueryRequest 有點(diǎn)誤導(dǎo):無(wú)論是查詢(xún)請(qǐng)求還是更新請(qǐng)求,都涉及所有請(qǐng)求。)

內(nèi)容流來(lái)源

當(dāng)前請(qǐng)求處理程序可以通過(guò)多種方式獲取內(nèi)容流:

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

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

使用 RemoteStreaming

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

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

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

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

遠(yuǎn)程流也可以通過(guò) Config API 啟用,如下所示:

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

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

調(diào)試請(qǐng)求

隱式“轉(zhuǎn)儲(chǔ)” RequestHandler(請(qǐng)參閱 Implicit RequestHandlers)只是使用指定的編寫(xiě)器類(lèi)型 wt 來(lái)輸出 SolrQueryRequest 的內(nèi)容。這是一個(gè)有用的工具,有助于了解哪些流可用于 RequestHandlers。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)