我有一个对开始站点进行建模的示例。假设该网站有数百家商店和数百万种产品。每个商店的产品范围:每商店1000-100.000个产品。我需要能够汇总产品和商店字段。所有产品和所有商店都具有相同的架构。

产品

        {
          "productName"
          "price"
          "category"
        }


{
  "shopName"
  "rating"
}

1)具有a)1个索引/商店,b)相同索引和1种类型/商店或c)相同索引,相同类型并具有用于确定产品商店的字段是否更有效?

我阅读了一些相关文章,其中大多数都赞成相同的索引和1种类型/商店。但是后来他们说,如果只有一个索引包含大量文档,那么它可能比拥有多个索引还要慢。

2)我还需要在商店和产品之间执行JOINS和聚合。例如,我需要能够从商店中检索评分高于8/10的所有产品,并获取每个类别的产品数量。最好使用a)应用程序侧的JOIN,b)父子关系,c)Siren plug-in,d)其他东西?

最佳答案

对于您提到的用例,我肯定会使用单个非规范化索引/类型。如果您需要商店的更多字段,那么您将为商店创建另一个索引,同时仍保留第一个非规范化索引。请注意,您可能需要在商店名称旁边添加唯一的商店ID。

关于elasticsearch - 在Elasticsearch中对数据建模的最有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37461450/

10-13 07:46