Apache Solr重新索引不适用于大量记录

问题描述

我正在尝试使用collections api将solr集合中的记录重新索引到一个新集合,对于具有6000条记录的集合来说,它工作正常,并且在5分钟内将源集合中的所有文档复制到目标集合中。 但是,当我尝试为具有300万条记录的馆藏重新编制索引时,它无法正常工作。当我检查重新索引状态时,给出以下响应

  "responseHeader":{
    "status":0,"QTime":11},"reindexStatus":{
    "actualSourceCollection":"my-collection","actualTargetCollection":"my-collection-copy","checkpointCollection":".rx_ck_my-collection","daemonName":"my-collection-copy","daemonUrl":"http://localhost:8983/solr/my-collection_shard1_replica_n1","inputDocs":3197842,"phase":"copying documents","processedDocs":0,"state":"running"}}

我等待了大约5个小时,但没有文件被复印。我什至尝试了多种方法,例如增加分片和副本集,但是没有运气。

我在具有两个节点的云模式下运行solr,我的源集合具有两个分片和两个副本集。

我正在使用8.2版

当我检查日志时,没有看到任何错误。相同的过程可以很好地收集较少的记录。

我正在将重新索引过程作为异步任务执行。以下是我用于重新编制索引的命令 / solr / admin / collections?action = REINDEXCOLLECTION&name = my-first-collections&target = my-first-collections-copy&async = 1000

任何帮助调试问题的方法都会更有帮助

解决方法

我发现了问题。我正在为更新的架构进行重新索引操作,在新架构中,我将字段设置为强制字段,而该字段在现有文档中不存在,并且当我尝试将所有值复制到具有更新架构配置的新集合时,它在强制字段中失败条件。因此不会发生重新编制索引的情况。

尽管在Solr中我没有找到任何错误状态或用于重新索引操作的错误日志,但是它一直在显示正在复制文档的状态。

如果solr在这种情况下抛出一些错误,那会更容易

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...