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.