elasticsearch agrupar por vários campos

Estou procurando a melhor maneira de agrupar dados na pesquisa elástica. O Elasticsearch não suporta algo como 'agrupar por' no sql.

Vamos dizer que tenho 1k categorias e milhões de produtos. qual você acha que é a melhor maneira de renderizar uma árvore de categorias completa? Você precisa de alguns metadados (ícone, link-alvo, títulos seo, ...) e classificação personalizada para as categorias.

Usando agregações: exemplo:https://found.no/play/gist/8124563 parece útil se você precisar agrupar por um campo e precisar de alguns campos extras.

Usando vários campos em uma faceta (não funcionará) Exemplo:https://found.no/play/gist/1aa44e2114975384a7c2 Aqui perdemos a relação entre os diferentes campos.

Construindo facetas engraçadashttps://found.no/play/gist/8124810

por exemplo, construir uma árvore de categorias usando essas 3 "soluções" é uma porcaria. A solução 1 pode funcionar (o ES 1 não está estável no momento) A solução 2 não funciona A solução 3 é dolorosa, porque é feia, você precisa preparar muitos dados e as facetas explodem.

Pode ser uma alternativa não armazenar dados de categoria no ES, apenas o IDhttps://found.no/play/gist/a53e46c91e2bf077f2e1

do que você poderia obter a categoria associada de outro sistema, como redis, memcache ou banco de dados.

isso acabaria em código limpo, mas o desempenho poderia se tornar um problema. por exemplo, carregar 1k categorias do banco de dados memcache / Redis / a pode ser lento. outro problema é que sincronizar 2 bancos de dados é mais difícil do que sincronizar um.

como você lida com esses problemas?

Sinto muito pelos links, mas não posso postar mais de 2 em um artigo.

questionAnswers(3)

yourAnswerToTheQuestion