在不丢失数据且不使用动态字段的情况下更改 Solr 模式
Solr's schema change without loosing data and without using dynamic fields
我想做这一切:
- 我想为我的新文档索引将更多字段添加到同一个 Solr 架构中。
- 我不想丢失存储在同一个 Solr 碎片中的旧索引。
我不知道关于以下限制的解决方案:
- 我不想使用动态字段,因为我不希望任何索引文档应该有我不知道的字段(因为索引也可以由其他 Solr 用户发布,我想要限制他们可以添加哪些字段)。
有什么解决办法吗?如果是,那么解决方法是什么。
虽然这并不常见(因为在这些情况下完整重建索引更合适)
- 如果您不必修改现有属性
- 如果你想添加新属性
您可以在不重新索引旧内容的情况下做到这一点。当然:现有文档不会有这些新字段。如果您对此表示满意,那么您不必重新编制索引。
动态字段不是强制性的,所以如果不需要就不必使用,但也许我没听懂问题的 "constraint" 部分。
是的,你可以做到。只需在模式中添加新字段(不一定是动态的)并将新文档索引到 Solr。正如 Andrea 所提到的,它只是旧文档不会有新插入的字段。
注意:不要将新添加的字段设为 "required = true",这会破坏现有索引。
我想做这一切:
- 我想为我的新文档索引将更多字段添加到同一个 Solr 架构中。
- 我不想丢失存储在同一个 Solr 碎片中的旧索引。
我不知道关于以下限制的解决方案:
- 我不想使用动态字段,因为我不希望任何索引文档应该有我不知道的字段(因为索引也可以由其他 Solr 用户发布,我想要限制他们可以添加哪些字段)。
有什么解决办法吗?如果是,那么解决方法是什么。
虽然这并不常见(因为在这些情况下完整重建索引更合适)
- 如果您不必修改现有属性
- 如果你想添加新属性
您可以在不重新索引旧内容的情况下做到这一点。当然:现有文档不会有这些新字段。如果您对此表示满意,那么您不必重新编制索引。
动态字段不是强制性的,所以如果不需要就不必使用,但也许我没听懂问题的 "constraint" 部分。
是的,你可以做到。只需在模式中添加新字段(不一定是动态的)并将新文档索引到 Solr。正如 Andrea 所提到的,它只是旧文档不会有新插入的字段。
注意:不要将新添加的字段设为 "required = true",这会破坏现有索引。