2017-10-06 2 views
0

Je dois créer un diagramme à barres du «nombre d'utilisateurs actifs par date». Un utilisateur actif signifie l'utilisateur qui s'est connecté au cours des 7 derniers jours. J'ai donc besoin de compter le nombre total d'utilisateurs, dont la date de dernière activité est dans les 7 derniers jours. et je dois le faire pour chaque barre (jour) dans mon tableau.Quelles agrégations de recherche élastique dois-je utiliser?

Je comprends qu'il doit être fait à l'aide agrégations recherche élastique, mais pas certain

qui agrégations dois-je utiliser? agrégations de godets, agrégations de pipeline?

S'il vous plaît laissez-moi savoir si vous connaissez un exemple similaire de celui-ci.

Vous trouverez ici deux exemples d'exemples de documents pour l'utilisateur « john »

{ 
    "userid": "john", 
    "last_activity": "2017-08-09T16:10:10.396+01:00", 
    "date_of_this_report": "2017-09-24T00:00:00+01:00" 
} 


{ 
    "userid": "john", 
    "last_activity": "2017-08-09T16:10:10.396+01:00", 
    "date_of_this_report": "2017-09-25T00:00:00+01:00" 
} 

Répondre

0

Vous pouvez filtrer les utilisateurs avec la dernière activité pour les 7 derniers jours en utilisant date math le fonctionnement de ElasticSearch. Vous pouvez pousser le filtre avant la date histogram aggregation.

POST active_users/document_type1/_search 
{ 
    "size": 0, 
    "aggs": { 
    "filtered_active_users_7_days": { 
     "filter": { 
     "range": { 
      "last_activity": { 
      "gte": "now-7d/d" 
      } 
     } 
     }, 
     "aggs": { 
     "date_histogram_last_7_days": { 
      "date_histogram": { 
      "field": "last_activity", 
      "interval": "day" 
      } 
     } 
     } 
    } 
    } 
} 

espère que cela fonctionne pour vous.

+0

Merci, je vais essayer ceci et vous le faire savoir, dès que j'y ai accès à nouveau. – ozkolonur

+0

Comment ça s'est passé. Je suis confus comment cela peut également être réalisé par des agrégations de seau. – user3775217