5

Sto aggregando documenti che hanno ciascuno un timestamp. Il timestamp è UTC, ma i documenti hanno anche un fuso orario locale ("timezone": "America/Los_Angeles") che può essere diverso tra i documenti.Offset fuso orario dinamico nell'aggregazione elasticsearch?

che sto cercando di fare un date_histogram aggregation in base all'ora locale, non UTC o un fuso orario fisso (per esempio, utilizzando l'opzione "time_zone": "America/Los_Angeles").

Come posso convertire il fuso orario per ogni documento per la sua ora locale prima che l'aggregazione?

Ecco la semplice aggregazione:

{ 
    "aggs": { 
    "date": { 
     "date_histogram": { 
     "field": "created_timestamp", 
     "interval": "day" 
     } 
    } 
    } 
} 
+0

Hai mai trovato una soluzione per questo? So che è vecchio, ma sono nella stessa identica posizione e ho pensato di controllare prima di pubblicare una domanda altrimenti duplicata. –

risposta

0

non sono sicuro se ho pienamente capito, ma sembra che il time_zone property sarebbe per questo:

Il valore del fuso accetta sia un valore numerico per l'offset delle ore, ad esempio: "fuso orario": -2. Accetta anche un formato di ore e minuti, come "time_zone": "-02: 30". Un'altra opzione consiste nel fornire un fuso orario accettato come uno dei valori elencati qui.

0

Se si memorizza un altro campo che è l'ora locale senza informazioni sul fuso orario, dovrebbe funzionare.

prendere ogni timestamp avete (che è in UTC), convertirlo in una data nel fuso orario locale (questo conterrà le informazioni fuso orario). Ora basta semplicemente eliminare le informazioni sul fuso orario da questo datetime. Ora puoi eseguire azioni su questo nuovo campo.

Supponiamo di iniziare con questa volta in UTC: '2016-07-17T01: 33: 52.412Z'

Ora, supponiamo che siete in PDT è possibile convertirlo a: '2016-07- 16T18: 33: 52,412-07: 00'

Ora, hack fuori alla fine così si finisce con: '2016-07-16T18: 33: 52.412Z'

Ora è possibile operare su questo campo .