我遇到过这种情况,我们有时必须彻底擦除索引,然后重新索引集合。这个过程当然需要很多时间。我不想在Prod中允许任何或至少延长的停机时间。因此,我正在研究在Solr中创建一个新集合的方法,该集合是旧集合的副本,但没有数据。我可以在很少或任何服务降级的情况下重新索引这个新的Collection。然后我想使用别名将新Collection指向我们客户正在使用的别名,这样他们就可以在不知道的情况下开始使用新的Collection。
我目前正在运行4.2,但想知道我是否应该升级到4.7以便更好地支持这一点。似乎4.2具有大部分相同的Collection API支持。
我遇到的第一个障碍是我正在复制的Collection中有一个包含客户库的lib文件夹。如果可能的话,我想将它们推送到solrhome / lib文件夹,以便它们只被加载一次。我的问题是,如果我有不同版本的自定义数据导入器,那么我将遇到类加载器问题。
是否有人成功实施过此类情景,并能够深入了解您所拥有的陷阱和成功以及对您有何影响?
更多细节...... 我有许多不同的集合,它们是Solr云的一部分。在更改新复制的集合时,我不想在可能的情况下影响任何其他集合。
答案 0 :(得分:1)
我也有类似的情况,我可能会修改solr架构并需要重新索引整个数据。但我的生产停机时间并不多。所以,我们想出了一个类似的解决方案。
让我说我有一个SolrCloud1(现有的),带有collection1(它有它自己的结构)。我的应用程序在不同的机器上运行。我的SolrCloud1和应用程序之间有一个负载均衡器。
现在,使用collection1创建一个单独的SolrCloud(例如,SolrCloud2)。保持与以前相同的结构。现在,在此SolrCloud2中执行重新索引部分。完成后,在负载均衡器下提供新的SolrCloud。当新的SolrCLoud2启动时,关闭SolrCloud1。
因此,如果没有任何生产停工时间,您将对数据进行索引。用户无法对此有所了解。希望这会有所帮助。