代码之家  ›  专栏  ›  技术社区  ›  stannius

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

  •  13
  • stannius  · 技术社区  · 14 年前

    建议对核心的副本进行大更新,然后将其替换为主核心。我遵循以下步骤:

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

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

    (我可以合并核心,但我要做的一部分是去掉所有已删除的文档,而不尝试列出它们的列表。)

    是否有一些标志创建行动,我错过了?这个 Solr Wiki page for CoreAdmin 细节上有点疏漏。

    solr用户上有人建议使用复制。在这种情况下使用它(据我所知)需要以下步骤:

    1. 根据主核心的配置创建一个新的准备核心
    2. 将主核心的配置更改为主核心
    3. 将准备核心的配置更改为从属
    4. 导致/等待同步?
    5. 将准备核心的配置更改为不再是从属核心
    6. 交换准备和主核心

    一个更简单的基于复制的设置是配置一个永久的PREP core,它总是主的。主核心(根据需要在多个服务器上)可以是PREP核心的从属核心。索引可以在PREP核心上进行,速度可以快,也可以慢。

    我提出的另一个想法是(也包括一个永久的预科核心):

    1. 执行索引更新,然后提交/优化PREP core。
    2. 交换准备和主核心。
    3. 重新执行索引更新,然后在现在的PREP核心上提交/优化。它现在拥有与主核心相同的数据(理论上),并且将在附近,为下一个索引操作做好准备。
    1 回复  |  直到 14 年前
        1
  •  3
  •   Eric Pugh    14 年前

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

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

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

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