在Elasticsearch中建模数据的最有效方法

时间:2016-05-26 12:53:01

标签: elasticsearch

我有一个模拟开始网站的例子。假设该网站拥有数百家商店和数百万种产品。每个商店的产品范围: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)其他东西?

1 个答案:

答案 0 :(得分:1)

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