2016-05-04 16 views
0

Ich habe ein Dokument, pageTransition in ElasticSearch, die die vom Benutzer besuchten Seiten speichert. Es hat fromPageId, toPageId, erstellt (Zeit des Besuches) etc .. Die einzelnen Datensatz sieht unten wie wenn der Benutzer von Seite 183 bis Seite 184Elasticsearch: Aggregat Abfrage schreiben

"clientId": 0, 
"fromUrl": "http://ats.survale.com/Apply/AdditionalInfo.aspx", 
"toUrl": "http://ats.survale.com/Apply/ConfirmInfo.aspx", 
"fromPageId": "183", 
"toPageId": "184", 
"created": "2016-02-29T18:22:49.509Z" 

Jetzt geht ich eine Zählung aller Seitenübergangsdtc wollen in den letzten 7 Tagen . Ich meine 182-183: 12, 183-184: 13 und so weiter. Zusammen mit ihm möchte ich auch die durchschnittliche Zeit, die Benutzer auf jeder Seite verbracht haben. Ist es möglich, Aggregation zu verwenden?

Antwort

0

Um die Anzahl der Seitenübergänge in den Lats 7 Tage zu erhalten, können Sie diese verwenden:

{ 
    "size": 0, 
    "query": { 
    "bool": { 
     "filter": { 
     "range": { 
      "created": { 
      "gt": "now-7d" 
      } 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "transitions": { 
     "terms": { 
     "script": "[doc.fromPageId.value, doc.toPageId].join('-')" 
     } 
    } 
    } 
} 

hierfür Um Sie sicherstellen müssen arbeiten, dass dynamic scripting is enabled

+0

dieses Bedürfnis Skript tut in elasticsearch aktiviert sein? – vadiraj

+0

Ja, das ist richtig. – Val

+0

ohne Skript wie können wir tun? und es kann auch ein Array aller Zeitstempel zurückgeben, so dass ich die durchschnittliche Zeit manuell berechnen kann. – vadiraj