首页 > 解决方案 > solr 反模式中的子文档是否存在?

问题描述

我们有一个用例,我们存储所有产品数据,每个产品可以存在于 300 家商店中,并具有存储特定数据,如价格、报价等。

下面是一个这样的示例文档:

Catalog data Doc:

{
  "sku_id":"1231",
  "display_name":"spinach",
  "size":"250g",
  .....
  .....
  ... more other 15-20 fields 
}

Store data doc:
{
  "store_id":"1",
  "sku_id": "1231",
  "price":2,
  ..... another 5-6 fields
}

我们将这些文档建模为 Solr 中的父子关系。其中目录数据将是我们的父项,300 个商店特定数据将是我们的子项。

我们将在字段中执行范围过滤器查询,store price并且该字段也将用于分面/排序。不会对store (child)文档进行任何搜索。

最近,我们被告知子文档是一个anti-pattern(背后没有任何理由:))。

如果我们扁平化我们的文档,问题是,我们最终会在父(目录)文档中创建许多动态字段。

我们知道一个限制,父子关系中的就地更新,更新子中的一个字段需要替换整个块。我们已经编写了一个插件,负责在 Solr 中执行此操作。

我想知道在 solr 中使用子文档与使用动态字段的优缺点

标签: solr

解决方案


推荐阅读