I may be missing something, but, isn't the answer simpler than Vineeth's answer?
"aggregations": {
"timeslice": {
"histogram": {
"script": "doc['timestamp'].date.getHourOfDay()",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"order": {
"_key": "desc"
}
}
}
This is nice, as it'll also include any hours with zero results, and, it'll extend the results to cover the entire 24 hour period (due to the extended_bounds).
You can use 'getDayOfWeek', 'getHourOfDay', ... (see 'Joda time' for more).
This is great for hours, but for days / months it'll give you an number rather than the month name. To work around, you can get the timeslot as a string - but, this'll won't work with the extended bounds approach, so you may have empty results (i.e. [Mon, Tues, Fri, Sun]).
In-case you want that, it is here:
"aggregations": {
"dayOfWeek": {
"terms": {
"script": "doc['timestamp'].date.dayOfWeek().getAsText()",
"order": {
"_term": "asc"
}
}
}
Even if this doesn't help you, hopefully someone else will find it and benefit from it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…