为什么在 Solr 4.10.x 中更新索引要花这么多时间?
Why does an index update take so much time in Solr 4.10.x?
我正在使用 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个文档。
哪里有问题。谁能指导我?
您正在对每个 curl 请求使用硬提交。这会强制 solr 在每次提交时将段(用于存储索引的 lucene 数据结构)推送到磁盘。 Solr 总是将数据写入新的段,看起来它强制它创建 100K 段。
Solr 使用 mergePolicy 作为 TieredMergePolicy 和 mergeFactor
作为 10 默认参数,每次合并时 solr 有 10 个几乎相等的大小段。此合并进程在后台运行,使用 ConcurrentMergeScheduler 实现。
此合并过程 CPU 密集。这里可以使用softCommit
代替hardCommit
。这可能对你有帮助。
你应该像这样使用软提交
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"}}]'
我正在使用 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个文档。
哪里有问题。谁能指导我?
您正在对每个 curl 请求使用硬提交。这会强制 solr 在每次提交时将段(用于存储索引的 lucene 数据结构)推送到磁盘。 Solr 总是将数据写入新的段,看起来它强制它创建 100K 段。
Solr 使用 mergePolicy 作为 TieredMergePolicy 和 mergeFactor
作为 10 默认参数,每次合并时 solr 有 10 个几乎相等的大小段。此合并进程在后台运行,使用 ConcurrentMergeScheduler 实现。
此合并过程 CPU 密集。这里可以使用softCommit
代替hardCommit
。这可能对你有帮助。
你应该像这样使用软提交
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"}}]'