我们正在寻找一些建议,围绕Solr系统地重新索引一个不断增长的文档集(现在有数千万,一年中有数亿),而不会使当前运行的索引失效.需要在定期基础上重新编制索引,因为:
围绕搜索需要额外模式字段的现有语料库引入了新功能,这些字段我们无法提前预期
语料库跨多个分片索引.当它超过某个阈值时,我们需要创建更多的分片并在所有分片上均匀地重新平衡文档(SolrCloud似乎还不支持).
当前索引会收到非常频繁的更新和添加,需要在几分钟内进行搜索.因此,在批量脱机中重新索引语料库的方法实际上不起作用,因为批次完成时,新文档将可用.
我们目前正在研究的方法是:
在旧群集仍可供搜索时,创建新的分片集群并批量重新索引.不属于重新编制索引的批处理的新文档将发送到旧群集和新群集.准备切换时,将负载均衡器指向新群集.
使用CoreAdmin:为每个分片生成一个新核心,并将重新索引的批处理发送到新核心.不属于重新编制索引的批处理的新文档将发送到旧核心和新核心.准备切换时,使用CoreAdmin动态交换核心.
我们很感激,如果人们可以确认或者在这些方法中的任何一个或所有方法中找到漏洞.一个比另一个更合适吗?还是我们完全脱了?先感谢您.