2016-04-11 18 views
0

Hallo Elasticsearch Leute,Elasticsearch mehrere Aggregation auf Zeitintervall

Ich versuche, eine zeitbasierte Abfrage auf einer Zeitreihe Datensatz in Elasticsearch gespeichert auszuführen.

Ich frage mich, ob jemand einige Tricks teilen kann, um solche Dinge zu tun ... Grundsätzlich kommt jedes Dokument mit UTC-Zeit und einem Wert. Letztendlich möchte ich den Durchschnittswert für jede Stunde durch den Tag der letzten 12 Monate herausfinden.

Mein aktueller Ansatz ist irgendwie hacky - Ich speichere Daten in stündlicher Basis und auch ein Feld als die Stunde des Tages gespeichert, dh 1 PM UTC ist 13. Aber es ist so hacky und kommt mit einer Reihe von Problem: 1 Es hat keine Sommerzeiteinstellung, wie Sie vielleicht schon bemerken. 2. Ich muss die UTC-Stunden des Tages irgendwie auf die Ortszeit des Tages umrechnen. 3. viele andere Ausgaben ....

Sehr geschätzt für Ihre Hilfe im Voraus!

Leon

Antwort

0

So etwas sollte Ihnen, was Sie ohne Hacks benötigen:

{ 
    "query": {}, 
    "aggs": { 
    "hourOfDay": { 
     "histogram": { 
     "script": "doc['timestamp'].date.getHourOfDay()", 
     "interval": 1, 
     "min_doc_count": 0, 
     "extended_bounds": { 
      "min": 0, 
      "max": 23 
     }, 
     "order": { 
      "_key": "desc" 
     } 
     } 
    } 
    } 
} 
+0

Dank @Or. Was ist, wenn das dynamische Skript nicht verfügbar ist? Außerdem muss ich wahrscheinlich die Zeitzone konvertieren, bevor die Aggregation abgeschlossen ist. – LeonJustCurious

Verwandte Themen