【发布时间】:2014-12-22 20:39:42
【问题描述】:
由于我怀疑我的设置相当传统,我想先提供一些背景信息。我们的 Solr 设置涉及三个环境:
- 生产 - Solr 服务器托管在 Websolr。
- Staging - 也是托管在 Websolr 上的 Solr 服务器。
- 开发 - 通过sunspot_solr gem 支持,它允许我们轻松设置我们自己的本地 Solr 服务器进行开发。
在大多数情况下,这运作良好。我们有很多记录,因此进行完整的重新索引需要几个小时(尽管急切加载并使用后台作业来并行化工作)。但这并不算太糟糕,因为我们不需要经常完全重新索引。
但是还有另一种情况开始变得非常烦人......我们经常需要用生产数据填充我们的本地机器(或暂存环境)(即基本上从生产中获取 SQL 转储并将其通过管道传输到我们的本地数据库)。我们一直这样做是为了修正错误等等。
此时,由于我们的数据发生了变化,我们本地的 Solr 索引已经过时了。因此,如果我们希望我们的搜索正常工作,我们还需要重新索引我们的本地 Solr 服务器,这需要非常长的时间。
所以现在的问题是:我不想进行完整的重新索引,而是简单地将生产索引复制到我的机器上(即在概念上类似于 SQL 转储,但用于 Solr 服务器而不是数据库)。我已经用谷歌搜索了足够多的信息,知道这是可能的,但没有看到任何特定于 Websolr / Sunspot 的解决方案。这些是非常常见的工具,我想其他人一定已经知道了。
提前感谢您的帮助!
【问题讨论】:
-
我尝试将索引目录从我们的生产服务器复制到我们的 QA 和本地服务器。 Solr 多次抱怨索引有问题。我不知道这出了什么问题。对我有用的更简单的解决方案是设置复制并暂时使您的 QA/staging/local Solr 作为生产的奴隶。然后 Solr 复制将为您复制索引。完成后,将您的 QA/local/staging 设为 master(用于自己的环境),一切就绪。