title: How to store product catalog in Elasticsearch
body: <p>I'm about to store data of product catalog in Eleasticsearch with simplified model depicted here:
  <a href="https://i.stack.imgur.com/QorZp.png" rel="noreferrer">Product catalog model</a></p>
  
  <p>I can store entire product as one document:</p>
  
  <pre><code>{
    "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 }
        ]
      }
    ]
  }
  </code></pre>
  
  <p>My question is whether this is best aproach if I have these requirement on searching the catalog, or should I split it to multiple indexes with relation:</p>
  
  <ul>
  <li>pageable list of Products</li>
  <li>sortable by brand, title, price, discount</li>
  <li><p>each search request has pre-configured search params as follows:</p>
  
  <ul>
  <li>RootCategory - include just products where "categoryPath" starts with (eg. "/10/123")</li>
  <li>Locale - product title/description is localized to multiple languages</li>
  <li>OnStockOnly boolean flag - defines whether include only products which have at least one variant on one inventory</li>
  <li>Pricelist - id of the pricelist to be used</li>
  </ul></li>
  <li><p>Search params defined by user:</p>
  
  <ul>
  <li>Price range "from-to" (price is from defined pricelist as stated above)</li>
  <li>Facets: product brand, productVariant color, productVariant size</li>
  <li>Flags (checkboxes - apply only if check): featured product, promo product, discounted price (for at least one product variant)</li>
  </ul></li>
  </ul>
  
  <p>Note that catalog will be multi-lingual, so the idea is to create index per language (eg. catalog-en, catalog-de, etc.)</p>