2016-10-20 2 views
0

Ich habe ein Datumsfeld in meinem Elasticsearch-Dokument. Ich aggregiere auf diesem Feld.Zeit wird an Zeitzone angepasst

Dies ist meine Abfrage

GET _search 
{ 
    "size": 0, 
    "aggregations": { 
    "timeslice": { 
    "histogram": { 
     "script": "doc['ad_inTime'].date.getHourOfDay()", 
     "interval": 1, 
     "min_doc_count": 0, 
     "extended_bounds": { 
      "min": 0, 
      "max": 23 
     }, 
     "order": { 
      "_key": "desc" 
     }, 
     "offset":0 
    } 
    } 
} 
} 

Jetzt mag ich die Zeitzone passieren (Offset oder Name der Zeitzone-je nachdem, was funktioniert) in dieser Zeile:

"script": "doc['ad_inTime'].date.getHourOfDay()", 

und erhält das Datum Zeitzone angepasst Gibt es eine Möglichkeit, es zu tun?

Antwort

1

Sie können die Zeitzone als Parameter an das Skript wie folgt passieren:

{ 
    "size": 0, 
    "aggregations": { 
    "timeslice": { 
     "histogram": { 
     "script": { 
      "inline": "doc['openDate'].date.setZone(DateTimeZone.forID(tz)); doc['openDate'].date.getHourOfDay()", 
      "params": { 
      "tz": "Europe/London" 
      } 
     }, 
     "interval": 1, 
     "min_doc_count": 0, 
     "extended_bounds": { 
      "min": 0, 
      "max": 23 
     }, 
     "order": { 
      "_key": "desc" 
     }, 
     "offset": 0 
     } 
    } 
    } 
} 
+0

Dank Mann, worked.This es ganze Skript Sache me.Can ist rätselhaft vorschlagen, dass Sie einige Online-Ressourcen, wo ich mehr lesen kann? –

+1

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html – Val

Verwandte Themen