Моделирование родительских / дочерних отношений (product / productvariant) в Elasticsearch

Я ломаю голову над моделированием вариантов продукта с использованием ES (или Solr)

Рассмотрим (надуманный пример):

разные продукты (скажем футболки)каждый продукт имеет набор свойств (productid, название, desc, бренд, цвет, популярность)у каждого продукта есть набор вариантов продукта со свойствами (productvariantid (комбинация размера productid ++), productid, размер, доступность, цена)

Похоже, это стандартное отношение родитель / потомок между product и productvariant. Так что я хотел бы смоделировать это в ES.

Я хотел бы иметь возможность сделать следующее:

A. Запросите варианты продукта (и верните все свойства). Не нужно возвращать свойства продукта, достаточно свойств продукта.

B. Каждый пользовательский запрос ограничен, так что не более 1 варианта продукта соответствует одному продукту (в вышеприведенном примере это означает, что мы ограничены productvariant.size)

C. фильтр по цене.

D. Фильтр по некоторым свойствам товара

E. заказ по цене

F. заказ на собственность продукта, такую как популярность, или комбинация 2.

G. фасет на productvariant.price

H. Фасет по нескольким свойствам товара (родитель)

Делать это с родительскими / дочерними документами иhas_parent в ES:A-E + G возможны.

Тем не менее, как насчетF а такжеH? Я смотрел на вещи как_scope для граней (хотя по общему признанию я не впускаю возможности на 100%) и всех других вещей, которые приходят на ум, но я не вижу очевидного решения, чтобы показать фасеты для свойств продукта и быть в состоянии сортировать их в сочетании сhas_parent .

Я пробовал другие вещи (на бумаге) - has_child -> не повезло, нужно возвращать информацию о вариантах - встроенные документы (вариант внутри продукта) и возвращать весь продукт со всеми вариантами. Это просто кажется неуклюжим. Более того, я почти уверен, что таким образом не могу получить заказ / заказ по цене.

Помощь очень ценится

Ответы на вопрос(1)

Ваш ответ на вопрос