solr - 模式更改是否需要重新索引所有 Solr 文档或仅包含已更改模式字段的文档?

标签 solr schema reindex

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

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

我可以只删除包含字段 A 的一千个文档并重新索引这千个文档,还是需要先删除整个索引(所有文档),然后再对它们全部重新建立索引?

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

最佳答案

  • 如果您对具有相同 ID(在 schema.xml 中定义的唯一键)的文档建立索引,则无需在建立索引之前删除它们。对具有相同 ID 的文档建立索引将覆盖现有文档。

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

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

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

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

关于solr - 模式更改是否需要重新索引所有 Solr 文档或仅包含已更改模式字段的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071377/

相关文章:

node.js - Mongoose 中的哪种 SchemaType 最适合时间戳?

elasticsearch - Elasticsearch:重新索引时设置字段类型? (可以单独使用_reindex完成)

SolrCloud 副本锁定相关错误

Amazon S3 中的 Tomcat/Apache Solr?那可能吗?

java - 在 DERBY 查询中省略模式

serialization - 如何将 AVRO 序列化器与 Kafka Connect SourceTask 中的架构注册表结合使用

indexing - 使用带有 float 的 Pandas reindex : interpolation

python - 如何交换 pandas 数据框上的索引和值

solr - Solr函数查询对多值字段的计数进行操作

search - Solr和ElasticSearch的可伸缩性:5000个值的字段