使用旧配置文件的 SolrCloud

如果您要从用户管理的集群迁移到 SolrCloud,此信息可能会有所帮助。

所有必需的配置都已在 Solr 附带的示例配置中设置。如果您要迁移旧配置文件,则只需添加以下内容。如果您打算在 SolrCloud 模式下使用 Solr,请不要从新的 Solr 实例中删除这些文件和参数。

这些属性存在于 3 个文件中:schema.xmlmanaged-schema.xmlsolrconfig.xmlsolr.xml

  1. 在模式文件中,您必须定义一个 _version_ 字段

    <field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
  2. solrconfig.xml 中,您必须定义一个 UpdateLog。这应该在 updateHandler 部分中定义。

    <updateHandler>
      ...
      <updateLog>
        <str name="dir">${solr.data.dir:}</str>
      </updateLog>
      ...
    </updateHandler>
  3. DistributedUpdateProcessor 是默认更新链的一部分,并且会自动注入到您的任何自定义更新链中,因此您实际上不需要对此功能进行任何更改。但是,如果您希望显式添加它,您仍然可以将它作为 updateRequestProcessorChain 的一部分添加到 solrconfig.xml 文件中。例如

    <updateRequestProcessorChain name="sample">
      <processor class="solr.LogUpdateProcessorFactory" />
      <processor class="solr.DistributedUpdateProcessorFactory"/>
      <processor class="my.package.UpdateFactory"/>
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>

    如果您不希望将 DistributedUpdateProcessFactory 自动注入到您的链中(例如,如果您想使用 SolrCloud 功能,但想自己分发更新),请在您的链中指定 NoOpDistributingUpdateProcessorFactory 更新处理器工厂

    <updateRequestProcessorChain name="sample">
      <processor class="solr.LogUpdateProcessorFactory" />
      <processor class="solr.NoOpDistributingUpdateProcessorFactory"/>
      <processor class="my.package.MyDistributedUpdateFactory"/>
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>

    在更新过程中,Solr 会跳过更新已在其他节点上运行的处理器。

    有关默认更新请求处理器链和选项的更多信息,请参阅默认更新请求处理器链部分。