如何使用现有数据创建solr核心?

sta*_*ius 13 solr

Solr 1.4 Enterprise Search Server建议对核心副本执行大型更新,然后将其交换为主核心.我遵循以下步骤:

  1. 创建准备核心:http:// localhost:8983/solr/admin/cores?action = CREATE&name = prep&instanceDir = main
  2. 执行索引更新,然后在准备核心上提交/优化.
  3. 交换main和prep核心:http:// localhost:8983/solr/admin/cores?action = SWAP&core = main&other = prep
  4. 卸载准备核心:http:// localhost:8983/solr/admin/cores?action = UNLOAD&core = prep

我遇到的问题是,在步骤1中创建的核心中没有任何数据.如果我要对所有东西和厨房水槽做一个完整的索引,那就没问题了,但如果我只是想更新一个(大)文件的子集 - 那显然不会起作用.

(我可以合并核心,但我正在尝试做的部分是删除任何已删除的文档,而不试图列出它们.)

我错过了CREATE动作的标志吗?CoreAdminSolr Wiki页面在细节上有点稀疏.

可能的解决方案:复制

solr-user上有人建议使用复制.要在这种情况下使用它(我的理解)需要以下步骤:

  1. 根据MAIN核心的配置创建一个新的PREP核心
  2. 将MAIN核心的配置更改为主服务器
  3. 将PREP核心的配置更改为从属
  4. 导致/等待同步?
  5. 将PREP核心的配置更改为不再是从属
  6. 执行索引更新,然后在PREP核心上提交/优化.
  7. 交换PREP和MAIN核心

更简单的基于复制的设置是配置永远是主设备的永久PREP核心.MAIN核心(根据需要在尽可能多的服务器上)可以成为PREP核心的从属.可以根据需要快速或慢速地在PREP核心上进行索引.

可能的解决方案:永久PREP核心和双重更新

我想出的另一个想法是这个(也涉及一个永久的PREP核心):

  1. 执行索引更新,然后在PREP核心上提交/优化.
  2. 交换PREP和MAIN核心.
  3. 重新执行索引更新,然后提交/优化现在的PREP核心.它现在具有与MAIN核心相同的数据(理论上)并且将会存在,为下一个索引操作做好准备.

Eri*_*ugh 3

我创建了克隆操作的想法,该操作对索引和配置数据进行文件系统复制,然后创建一个新的。存在一些锁定问题,并且您必须具有对索引的文件系统访问权限,但它确实有效。这确实给了你一个很好的副本,你可以用它来处理配置文件。

我想得越多,你可以创建一个新的核心,然后执行以下操作:

从主命令强制从属设备上获取索引:http://slave_host:port/solr/replication?command=fetchindex 可以传递额外的属性“masterUrl”或其他属性,如“压缩”(或指定的任何其他参数)在标签中)从主服务器进行一次性复制。这消除了在从机中对主机进行硬编码的需要。

并从生产版本中填充新版本,然后应用更新,然后交换回来!