架构更改是否需要重新索引所有Solr文档或仅包含更改的架构字段的文档?

时间:2014-04-14 22:15:46

标签: solr schema reindex

我的Solr索引中有数百万个文档。这些文档中只有一千个具有字段A,我想要更改其模式。架构更改包括将 multiValued 从true更改为false,将存储从false更改为true,将 type 从文本更改为字符串,这些都需要重新设置指数。重新索引上千个文档将花费我几分钟,在那里 - 重新索引一切都需要几天。

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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

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