2017-07-26 2 views
0

Si les données ont Solr pour les utilisateurs et les objectifsSolr obtenir le nombre de fonctions d'agrégation

{user_id: user1,goals: 1} 
{user_id: user1,goals: 3} 
{user_id: user2,goals: 0} 
{user_id: user2,goals: 4} 
{user_id: user3,goals: 2} 
{user_id: user3,goals: 1} 

Je suis désireux de savoir combien d'utilisateurs ont marqué 1,2,3 ... buts au total.

Donc, pour les données ci-dessus, je veux une requête qui peut retourner

{goals: 3, count: 1} 
{goals: 4, count: 2} 

Jusqu'à présent, j'ai une requête qui peut renvoyer le nombre total d'objectifs pour chaque utilisateur, mais ne sais pas s'il est possible de facette sur les totaux

Ma requête jusqu'à

{ 
    "user_facet": 
    { 
    "type":"terms", 
    "field":"user_id", 
    "facet": 
    { 
     "sum_of_goals":"sum(goals)" 
    } 
    } 
} 
+0

pouvez-vous reformuler? l'échantillon est difficile à comprendre, ne semble pas correspondre les données à moi ... – Persimmonium

+0

fondamentalement il ya deux étapes, totalisant les objectifs par utilisateur si l'utilisateur 1 = 4, l'utilisateur 2 = 4, l'utilisateur 3 = 3 objectifs. Ensuite, je veux compter le nombre d'utilisateurs qui ont marqué 3 buts = 1, 4 buts = 2 –

+0

alors qu'est-ce que {user_id: user1, buts: 1} signifie, que l'utilisateur1 a terminé "but 1" de ce "utilisateur1 a terminé 1 buts au total. " – Persimmonium

Répondre

1

Je ne pense pas que vous pouvez obtenir ce avec des facettes de JSON. Mais c'est sûr que c'est possible avec Streaming Expressions. Ils sont un peu plus complexes à démarrer, mais vous pouvez accomplir beaucoup plus de choses.

+0

Merci, pour l'instant J'utilise la requête pour obtenir les totaux pour chaque utilisateur et le traitement des résultats dans Ruby pour calculer les données dont j'ai besoin mais je vais regarder dans les expressions de streaming –