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

use*_*791 4 schema solr reindex

我的Solr索引中有数百万个文档.这些文档中只有一千个具有字段A,我想要更改其模式.模式更改包括将multiValued从true 更改为false,从false 存储为true,以及从text到string 类型,需要重新索引的内容.重新索引上千个文档将花费我几分钟,在那里 - 重新索引一切都需要几天.

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

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

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

小智 7

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

请记住,当你指数具有相同ID的文档时,旧文件被自动"删除",但是未从索引中删除标记.和期限矢量分析被应用到所有文件(包括删除的文件)

如果您需要物理清理删除的文件,你需要执行指标"优化",你可以从Solr管理界面做到这一点.

  • 如果您进行了更改架构,你不必索引一切.重新索引唯一受影响的文件就足够了.

所以,如果我是你的地方,我甚至不会删除任何东西.我只想重新索引不仅影响文档几千.然后稍后进行优化以清理索引.