【问题标题】:Solr update compressed requestSolr 更新压缩请求
【发布时间】:2014-09-05 13:28:54
【问题描述】:

如果已经有答案,我提前道歉,但我还没有找到任何答案......

我正在使用 Solr 实例,我正在索引数百万个文档,这些文档被拆分为 json 文件,每个文件有 500K 个文档,大约 60MB。压缩后缩小到只有 6MB。 所以我想知道是否有办法发送压缩文件,即 6M 而不是 60MB,从而在收到文件后,在处理之前解压缩/放气。

我浏览了 sol wiki,但 solr 插件是“高级的,不推荐”

【问题讨论】:

  • 您使用的是哪个应用程序容器?捆绑的码头?容器负责接收请求并将其放气,因此您可以在码头尝试Content-Encoding: gzipGzipFilter
  • 如果您使用 SolrJ 来索引文档,那么您可以使用 SolrServer.setAllowCompression 方法 solr-start.com/javadoc/solr-lucene/org/apache/solr/client/solrj/…
  • @MatsLindh:我不确定我做错了什么。我已经尝试过了,但我收到了这个错误:FAILED GzipFilter: javax.servlet.UnavailableException: org.eclipse.jetty.servlets.GzipFilter javax.servlet.UnavailableException: org.eclipse.jetty.servlets.GzipFilter
  • @sidgate: 这是我要压缩的请求
  • 你是如何创建请求的?

标签: solr http-compression


【解决方案1】:

经过深思熟虑,我得出结论,创建一个处理压缩的 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('http://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

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2011-12-09
    • 2017-01-03
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多