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.