在不丢失数据且不使用动态字段的情况下更改 Solr 模式

Solr's schema change without loosing data and without using dynamic fields

我想做这一切:

  1. 我想为我的新文档索引将更多字段添加到同一个 Solr 架构中。
  2. 我不想丢失存储在同一个 Solr 碎片中的旧索引。

我不知道关于以下限制的解决方案:

  1. 我不想使用动态字段,因为我不希望任何索引文档应该有我不知道的字段(因为索引也可以由其他 Solr 用户发布,我想要限制他们可以添加哪些字段)。

有什么解决办法吗?如果是,那么解决方法是什么。

虽然这并不常见(因为在这些情况下完整重建索引更合适)

  • 如果您不必修改现有属性
  • 如果你想添加新属性

您可以在不重新索引旧内容的情况下做到这一点。当然:现有文档不会有这些新字段。如果您对此表示满意,那么您不必重新编制索引。

动态字段不是强制性的,所以如果不需要就不必使用,但也许我没听懂问题的 "constraint" 部分。

是的,你可以做到。只需在模式中添加新字段(不一定是动态的)并将新文档索引到 Solr。正如 Andrea 所提到的,它只是旧文档不会有新插入的字段。

注意:不要将新添加的字段设为 "required = true",这会破坏现有索引。