【问题标题】:Why does an index update take so much time in Solr 4.10.x?为什么在 Solr 4.10.x 中索引更新需要这么长时间?
【发布时间】:2015-11-03 04:56:39
【问题描述】:

我正在使用 solr 4.10.3。我必须更新大约 100,000 个索引。查询就像每个文档

curl 'localhost:8900/solr/update?commit=true' -H 'Content-type:application/json' -d '[{"id":"org.wikipedia.ur:http/wiki/%D9%85%DB%8C%D9%84","group":{"set":"wiki"}}]'

开始更新这个索引后,12小时过去了,只更新了48000个文档。

问题出在哪里。谁能指导我?

【问题讨论】:

    标签: performance indexing solr lucene


    【解决方案1】:

    您对每个 curl 请求都使用硬提交。这迫使 solr 在每次提交时将段(用于存储索引的 lucene 数据结构)推送到磁盘。 Solr 总是将数据写入新的段,看起来它强制它创建 100K 段。

    Solr 使用 mergePolicy 作为 TieredMergePolicymergeFactor 作为 10 默认参数,每次 solr 有 10 个几乎相等大小的段时合并。此合并进程使用 ConcurrentMergeScheduler 实现在后台运行。

    此合并过程是 CPU 密集型的。在这里您可以使用softCommit 而不是hardCommit。这可能会对您有所帮助。

    【讨论】:

    • 在软提交的情况下,上面的查询会是什么?
    • 谢谢,第二个答案给了我我需要的东西
    • @Shafiq 我想我还向您解释了 solr 的内部结构。我向您提供了问题的部分原因,并建议您如何做到这一点。
    【解决方案2】:

    你应该像这样使用软提交

    curl 'localhost:8900/solr/update?softCommit=true' -H 'Content-type:application/json' -d '[{"id":"org.wikipedia.ur:http/wiki/%D9%85%DB%8C%D9%84","group":{"set":"wiki"}}]'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2011-09-24
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2011-06-28
      相关资源
      最近更新 更多