我的Solr索引中有数百万个文档。这些文档中只有一千个具有字段A,我想要更改其模式。架构更改包括将 multiValued 从true更改为false,将存储从false更改为true,将 type 从文本更改为字符串,这些都需要重新设置指数。重新索引上千个文档将花费我几分钟,在那里 - 重新索引一切都需要几天。
Solr wiki上的重新索引页面(http://wiki.apache.org/solr/HowToReindex)说“在开始编制索引过程之前,您可能需要删除所有文档”,但没有说明何时不删除。
我可以只删除包含字段A的千个文档并重新索引那些数千个,还是需要删除整个索引(所有文档)才能重新索引它们?
我在一个小的样本索引中测试了“删除少数”场景;并且更新和查询在更改的字段上按预期工作。但是,我不知道我是否幸运,而且因为没有删除所有内容而潜伏着一些问题。
答案 0 :(得分:7)
请记住,当您使用相同的ID索引文档时,旧文档会自动标记为“已删除”但不会从索引中物理删除。术语向量分析适用于所有文档(包括已删除的文档)
如果您需要物理清理已删除的文档,则需要执行索引“优化”,您可以从solr管理界面执行此操作。
所以,如果我在你的位置,我甚至不会删除任何东西。我只会重新索引数千个受影响的文档。然后稍后进行优化以清理索引。