4

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

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

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

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

4

1 回答 1

7
  • 如果您索引具有相同 ID(在您的 schema.xml 中定义的唯一键)的文档,那么您不必在索引之前删除它们。索引具有相同 ID 的文档将覆盖现有文档。

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

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

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

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

于 2014-04-15T02:43:54.810 回答