【问题标题】:Does schema change require reindex of all Solr documents or just documents containing the changed schema fields?架构更改是否需要重新索引所有 Solr 文档或仅包含已更改架构字段的文档?
【发布时间】:2014-05-29 01:53:51
【问题描述】:

我的 Solr 索引中有数百万个文档。这些文档中只有一千个具有字段 A,我想更改其架构。架构更改包括将 multiValued 从 true 更改为 false,将 stored 从 false 更改为 true,以及将 type 从 text 更改为 string,这些都需要重新指数。重新索引一千个文档需要几分钟,而重新索引所有内容需要几天时间。

Solr wiki (http://wiki.apache.org/solr/HowToReindex) 上的重新索引页面说“您可能需要在开始索引过程之前删除所有文档”,但没有说明何时不这样做。

我可以只删除包含字段 A 的一千个文档并重新索引那一千个,还是我需要在重新索引它们之前删除整个索引(所有文档)?

我已经在一个小的样本索引中测试了“删除少数”场景;并且更新和查询在更改的字段上按预期工作。但是,我不知道我是不是很幸运,并且由于没有删除所有内容而潜伏了一些问题。

【问题讨论】:

    标签: solr schema reindex


    【解决方案1】:
    • 如果您为具有相同 ID(在您的 schema.xml 中定义的唯一键)的文档编制索引,则您不必在编制索引之前将其删除。索引具有相同 ID 的文档将覆盖现有文档。

    请记住,当您索引具有相同 ID 的文档时,旧文档会自动标记为“已删除”,但不会从索引中物理删除。词向量分析适用于所有文档(包括已删除的文档)

    如果您需要物理清理已删除的文档,则需要执行索引“优化”,您可以从 solr 管理界面执行此操作。

    • 如果您对架构进行了更改,则不必为所有内容编制索引。仅对受影响的文档重新编制索引就足够了。

    所以如果我在你的位置,我什至不会删除任何东西。我只会重新索引几千个受影响的文档。然后再做优化以清理索引。

    【讨论】:

    • 我想将一个字段从字符串更改为长类型,而不是在模式文件中更改类型后如何对其进行索引?
    猜你喜欢
    • 2020-02-28
    • 2014-04-03
    • 2020-07-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2020-10-31
    • 2013-12-04
    • 2013-01-11
    相关资源
    最近更新 更多