我正在使用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个文档。
问题出在哪里。谁能指导我?
答案 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"}}]'