Json Solr原子更新

Json Solr原子更新,json,solr,Json,Solr,我有以下步骤: 更新数据库中的记录 使用json将记录添加到solr 在数据库中提交记录 我使用updatejson调用?commit=true插入记录 但这一步需要很长时间。有更好的方法保持同步吗? 记录需要存储在solr中。我不介意它可以立即搜索。提交很昂贵。不要在每次添加后提交。您可以每X个请求提交一次(其中X取决于您的延迟要求和每秒写入次数),也可以每X分钟单独提交一次(使用/update?commit=true)有两个方面: 保持数据库和Solr的同步 快点 为了可靠地保持同步,您

我有以下步骤:

  • 更新数据库中的记录
  • 使用json将记录添加到solr
  • 在数据库中提交记录
  • 我使用updatejson调用?commit=true插入记录 但这一步需要很长时间。有更好的方法保持同步吗?
    记录需要存储在solr中。我不介意它可以立即搜索。

    提交很昂贵。不要在每次添加后提交。您可以每X个请求提交一次(其中X取决于您的延迟要求和每秒写入次数),也可以每X分钟单独提交一次(使用
    /update?commit=true

    有两个方面:

    • 保持数据库和Solr的同步
    • 快点
    为了可靠地保持同步,您需要进行某种形式的同步。看

    要快速完成,您应该按照arun在中的建议分批完成。这是正确的,尤其是当您不需要立即搜索可用的文档时


    您还可以尝试使用比硬提交更便宜的。看见然后,URL将以
    update?softCommit=true
    结尾。本文对软提交和硬提交进行了很好的讨论:。

    我通过执行?commitWithin=15000解决了这个问题
    这会保留数据,但不会将数据与索引合并。每15秒一次。足以阻止我的进程。加载100000条记录需要几天到几个小时

    当你说它很慢时,你的意思是?commit=true阻塞了你的进程吗?我知道。但是我通过做一个?commitWithin=15000Ok解决了我的问题。commitWithin的另一个替代方法是waitSearcher=false&waitFlush=false。