如何在Elasticsearch中存储产品目录

时间:2018-02-08 16:27:20

标签: elasticsearch

我即将在Eleasticsearch中存储产品目录的数据,其简化模型如下所示: Product catalog model

我可以将整个产品存储为一个文档:

{
  "productNumber": "123456",
  "brand": "Acme Inc.",
  "title": "T-Shirt",
  "featured": false,
  "promo": true,
  "categories": [
    { "categoryId": "124", "categoryPath": "/10/123/124", "title": "T-Shirts", "titlePath": "Men's/Summer/T-Shirts" },
    { "categoryId": "666", "categoryPath": "/20/666", "title": "Men's", "titlePath": "Promos / Men's" }
  ],
  "variants": [
    {
      "sku": "123456-01",
      "color": "red",
      "size": "XL",
      "prices": [
        { "pricelist": "EUR-RRP", "currency": "EUR", "price": 200, "discountPc": 0, "discounted": false },
        { "pricelist": "EUR-PROMO", "currency": "EUR", "price": 180, "discountPc": 10, "discounted": true }
      ],
      "inventories": [
        { "inventoryId": "INV-001", "stockCount": 0 },
        { "inventoryId": "INV-002", "stockCount": 5 }
      ]
    }
  ]
}

我的问题是,如果我对搜索目录有这些要求,这是否是最好的方法,或者我应该将它拆分为多个关系索引:

  • 可分页的产品列表
  • 按品牌,标题,价格,折扣排序
  • 每个搜索请求都预先配置了搜索参数,如下所示:

    • RootCategory - 仅包含" categoryPath"从(例如" / 10/123")
    • 开始
    • 区域设置 - 产品标题/说明已本地化为多种语言
    • OnStockOnly布尔标志 - 定义是否仅包含一个库存中至少有一个变体的产品
    • 价目表 - 要使用的价格表的内容
  • 搜索用户定义的参数:

    • 价格范围"从 - 到" (价格来自如上所述的定义价格表)
    • 方面:产品品牌,产品变色,产品变化大小
    • 标志(复选框 - 仅在检查时适用):特色产品,促销产品,折扣价(至少一种产品型号)

请注意,目录将是多语言的,因此我们的想法是为每种语言创建索引(例如,catalog-en,catalog-de等)

0 个答案:

没有答案