如何配置Solr以提高索引速度

如何配置Solr以提高索引速度,solr,solrj,solr4,Solr,Solrj,Solr4,我有一个客户端程序,可以生成1-5000万个Solr文档,并将它们添加到Solr中。 我使用ConcurrentUpdateSolrServer从客户端推送文档,每个请求1000个文档。 文档相对较小(很少有小文本字段)。 我想提高索引速度。 我试图将“ramBufferSizeMB”增加到1G,“mergeFactor”增加到25,但没有看到任何变化。 我想知道是否有其他一些建议设置可以提高Solr索引速度。 任何相关资料的链接将不胜感激 看起来您正在将大量数据导入Solr,因此不需要立即搜索

我有一个客户端程序,可以生成1-5000万个Solr文档,并将它们添加到Solr中。
我使用ConcurrentUpdateSolrServer从客户端推送文档,每个请求1000个文档。
文档相对较小(很少有小文本字段)。
我想提高索引速度。
我试图将“ramBufferSizeMB”增加到1G,“mergeFactor”增加到25,但没有看到任何变化。
我想知道是否有其他一些建议设置可以提高Solr索引速度。

任何相关资料的链接将不胜感激

看起来您正在将大量数据导入Solr,因此不需要立即搜索任何数据

首先,您可以增加每个请求的文档数。由于您的文档很小,我甚至会将每个请求的文档数增加到10万个或更多,然后再试一次

其次,您希望减少批量索引时的提交次数。在solrconfig.xml中查找:

<!-- AutoCommit

     Perform a hard commit automatically under certain conditions.
     Instead of enabling autoCommit, consider using "commitWithin"
     when adding documents.

     http://wiki.apache.org/solr/UpdateXmlMessages

     maxDocs - Maximum number of documents to add since the last
               commit before automatically triggering a new commit.

     maxTime - Maximum amount of time in ms that is allowed to pass
               since a document was added before automatically
               triggering a new commit.

     openSearcher - if false, the commit causes recent index changes
     to be flushed to stable storage, but does not cause a new
     searcher to be opened to make those changes visible.
  -->
 <autoCommit>
   <maxTime>15000</maxTime>
   <openSearcher>false</openSearcher>
 </autoCommit>

15000
假的
您可以完全禁用自动提交,然后在发布所有文档后调用提交。否则,可以按如下方式调整数字:

默认的
maxTime
为15秒,因此如果存在未提交的文档,则每15秒自动提交一次,因此您可以将其设置为较大的值,例如3小时(即3*60*60*1000)。您还可以添加
50000000
,这意味着只有在添加5000万个文档后才会发生自动提交。发布所有文档后,手动或从SolrJ调用提交一次-提交需要一段时间,但总体来说速度要快得多


另外,在完成批量导入后,减少
maxTime
maxDocs
,以便您对Solr所做的任何增量帖子都能更快提交。或使用<代码>委托> < />代码> SorRunFig .< /P> < P>除了上面所写的之外,在使用SolrCloud时,您可能需要考虑使用SoRrJ时使用<代码> CurrdSoReleCase<代码>。
CloudSolrClient
客户端类支持Zookeeper,在某些情况下可以直接连接到leader shard以加快索引速度

如果完全禁用提交,可能会耗尽内存。但是不重新打开搜索程序是个好主意。您好,您能建议如何配置它,使其不会重新打开搜索程序吗?
false
在自动提交后不会打开新的搜索程序。但是如果您使用的是带
commit
的复制,然后值得一提的是,奴隶们并不关心是否在master上打开了一个新的搜索器。如果主服务器上有自动提交的索引,则主服务器和从服务器上的索引版本将不同,因此从服务器将从主服务器复制(部分)索引并打开新的搜索程序。如果您在master上使用带有
clean=true
的数据导入处理程序执行完全导入,这尤其会造成问题,因为这首先会发出“全部删除”查询。