为什么索引更新在Solr 4.10.x中花费了这么多时间?

时间:2015-08-11 05:20:09

标签: performance indexing solr lucene

我正在使用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个文档。

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

您应该像这样使用软提交

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"}}]'