我的 Solr 索引中有数百万个文档。其中只有一千个文档具有字段 A,我想更改其架构。架构更改包括更改多值从真到假,stored从假到真,并且type从文本到字符串,需要重新索引的东西。重新索引数千个文档将花费我几分钟的时间,而重新索引所有内容则需要几天的时间。
Solr wiki 上的重新索引页面 (http://wiki.apache.org/solr/HowToReindex http://wiki.apache.org/solr/HowToReindex)说“您可能需要在开始索引过程之前删除所有文档”,但没有说明何时不需要。
我可以只删除包含字段 A 的一千个文档并重新索引这千个文档,还是需要先删除整个索引(所有文档),然后再对它们全部重新建立索引?
我已经在一个小型样本索引中测试了“删除少数”场景;更新和查询在更改的字段上按预期工作。然而,我不知道我是否只是运气好,由于没有删除所有内容而潜伏着一些问题。
- 如果您使用相同的 id(在 schema.xml 中定义的唯一键)对文档建立索引,则不必在建立索引之前删除它们。对具有相同 ID 的文档建立索引将覆盖现有文档。
请记住,当您为具有相同 ID 的文档建立索引时,旧文档会自动标记为“已删除”,但不会从索引中物理删除。并且词向量分析适用于所有文档(包括已删除的文档)
如果您需要物理清理已删除的文档,则需要执行索引“优化”,您可以从 solr 管理界面执行此操作。
- 如果您对架构进行更改,则不必对所有内容建立索引。仅重新索引受影响的文档就足够了。
所以如果我处在你的位置,我什至不会删除任何内容。我只会重新索引数千个受影响的文档。然后稍后进行优化以清理索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)