elasticsearch agrupando por campos múltiples

Estoy buscando la mejor manera de agrupar datos en elasticsearch. Elasticsearch no soporta algo así como 'group by' en sql.

Digamos que tengo 1k categorías y millones de productos. ¿Cuál crees que es la mejor manera de representar un árbol de categorías completo? Por supuesto, necesita algunos metadatos (icono, enlace-destino, seo-títulos, ...) y clasificación personalizada para las categorías.

Usando Agregaciones: Ejemplo:https://found.no/play/gist/8124563 Parece útil si tiene que agrupar por un campo y necesita algunos campos adicionales.

Uso de varios campos en una faceta (no funciona) Ejemplo:https://found.no/play/gist/1aa44e2114975384a7c2 Aquí perdemos la relación entre los diferentes campos.

Construyendo facetas divertidashttps://found.no/play/gist/8124810

por ejemplo, la construcción de un árbol de categorías utilizando esta 3 "soluciones" apesta. La solución 1 puede funcionar (ES 1 no es estable en este momento) La solución 2 no funciona La solución 3 es dolor, porque se siente feo, es necesario preparar una gran cantidad de datos y las facetas explotar.

Puede que una alternativa sea no almacenar ningún dato de categoría en ES, solo el IDhttps://found.no/play/gist/a53e46c91e2bf077f2e1

de lo que podría obtener la categoría asociada de otro sistema, como redis, memcache o la base de datos.

Esto terminaría en código limpio, pero el rendimiento podría convertirse en un problema. por ejemplo, cargar 1k Categorías desde la base de datos memcache / Redis / a podría ser lento. otro problema es que sincronizar 2 bases de datos es más difícil que sincronizar una.

¿Cómo lidias con tales problemas?

Lo siento por los enlaces, pero no puedo publicar más de 2 unidades en un artículo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta