在Vespa中实现父文档关联多子文档的技术咨询
父文档定义多个文档引用的可行性解答
当然可以!在Vespa中,父文档完全支持定义多个文档引用字段——不管是引用不同类型的子文档,还是多次引用同一种类型B的子文档(只要字段名称唯一),都能轻松实现你要的关联需求。
具体实现示例
先定义子文档类型B的基础结构:
document B { field id type string { indexing: attribute | summary } field content type string { indexing: index | summary } }
接着在父文档A中定义多个引用字段,甚至可以区分不同关联场景的引用:
document A { field id type string { indexing: attribute | summary } // 关联单个B类型子文档(比如主关联文档) field primary_subdoc type reference<B> { indexing: attribute | summary } // 关联多个B类型子文档的集合(比如次要关联文档组) field secondary_subdocs type array<reference<B>> { indexing: attribute | summary } // 再定义一组用途不同的B类型子文档引用 field related_subdocs type array<reference<B>> { indexing: attribute | summary } }
关键说明
- 每个引用字段必须有唯一的名称,类型可以是单个
reference<B>或者数组array<reference<B>>,后者就能直接满足“关联任意数量同类型B子文档”的需求。 - 检索时可以通过
join语法关联父子文档,比如从父文档A出发查询其关联的所有B子文档内容,或者根据子文档的属性筛选对应的父文档。 - 引用字段的
indexing配置要包含attribute,这样才能在查询时高效完成父子文档的关联操作。
内容的提问来源于stack exchange,提问作者vandit.thakkar
相关产品推荐
相关产品推荐

