我正在使用 Solr 8.11。我的 Solr 模式中有一个字段已索引但未存储 (
indexed=true stored=false
)。当我更新 Solr 文档中的另一个字段时,非存储字段中的信息会丢失(不再可搜索)。一种解决方案是重新索引 Solr 文档,但就我而言,这是不可能的。
我尝试通过创建一个包含已更新字段的子文档来解决该问题。但是,该字段也应该被索引,因此据我了解,就地更新不可用。另一方面,子文档的原子更新也会弄乱非存储的父文档字段。
我有什么选择,这对于亲子解决方案是否可行? 一种选择可能是完全拆分文档(一个包含非存储字段,另一个包含更新的字段)。然后我也许可以使用连接查询来“组合”数据。然而,这是额外的麻烦。 还有更好的选择吗?
我在 Solr 9.2.1 中遇到了类似的问题,这个文档帮助了我:https://solr.apache.org/guide/solr/latest/indexing-guide/partial-document-updates.html#field-storage
就我而言,我有一个父文档,其中有两个未存储的字段或 docValue 或由复制字段填充,因此每次我更新子文档中的“角色”字段时,它都会清除父文档中的这两个字段。我在“地址”(不同的子文档)中有一个类似的字段,但它会保留其信息。
我的文档结构示例:
{
...,
roles: [{...}],
addresses: [{...}]
}
我认为对于非存储字段你有几个选择: