1
我在先進的道歉,如果已經有一個答案,但我還沒有發現任何...Solr的更新壓縮請求
我用Solr的情況下玩耍,我是索引數以百萬計的文檔,這些被分割成每個文件大小爲60MB的500K文檔的json文件。當壓縮縮小到僅僅6MB。 所以我想知道是否可以有一種方法來發送壓縮文件,即6M而不是60MB,從而在收到文件後,在處理它之前解壓縮。
我看了看周圍的溶膠維基,但Solr的插件是「先進的,不推薦使用」
我在先進的道歉,如果已經有一個答案,但我還沒有發現任何...Solr的更新壓縮請求
我用Solr的情況下玩耍,我是索引數以百萬計的文檔,這些被分割成每個文件大小爲60MB的500K文檔的json文件。當壓縮縮小到僅僅6MB。 所以我想知道是否可以有一種方法來發送壓縮文件,即6M而不是60MB,從而在收到文件後,在處理它之前解壓縮。
我看了看周圍的溶膠維基,但Solr的插件是「先進的,不推薦使用」
一番考慮之後,我的結論是,這將是簡單的創建一個REST端點將處理壓縮,然後在本地將數據傳遞到Solr,如下圖所示:
// Grab compressed data and uncompress
$data = file_get_contents('php://input');
$data = gzinflate(substr($data, 10, -8));
// Send to Solr
$ch = curl_init('localhost:8983/solr/update/json?commit=true&');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
所以我並不需要破解的Solr
您正在使用哪個應用程序容器?捆綁的碼頭?容器的責任是接收請求並對其進行壓縮,因此您可以在碼頭嘗試'Content-Encoding:gzip'和'GzipFilter'。 – MatsLindh 2014-09-05 13:42:30
如果您使用SolrJ來索引文檔,那麼您可以使用SolrServer.setAllowCompression方法http://www.solr-start.com/javadoc/solr-lucene/org/apache/solr/client/solrj/impl/HttpSolrServer.html #setAllowCompression-boolean- – sidgate 2014-09-05 14:26:52
@MatsLindh:我不知道我做錯了什麼。我試過,但我得到這個錯誤: 'FAILED GzipFilter:javax.servlet.UnavailableException:org.eclipse.jetty.servlets.GzipFilter javax.servlet.UnavailableException:org.eclipse.jetty.servlets。 GzipFilter' – 2014-09-05 14:59:23