我一直在尝试在 elasticsearch 中使用日期直方图聚合,它以纪元或 yy-mm-dd-mm-ss 格式返回日期。但我想要的是每周获取文档计数,例如 monday 、 tuesday 等。有什么方法可以做到这一点吗?
最佳答案
我可能遗漏了什么,但是,答案不是比 Vineeth 的答案更简单吗?
"aggregations": {
"timeslice": {
"histogram": {
"script": "doc['timestamp'].date.getHourOfDay()",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"order": {
"_key": "desc"
}
}
}
这很好,因为它还会包括结果为零的任何时间,并且它会将结果扩展到涵盖整个 24 小时期间(由于 extended_bounds)。
您可以使用“getDayOfWeek”、“getHourOfDay”……(有关更多信息,请参阅“Joda 时间”)。
这对于数小时非常有用,但对于数天/数月,它会为您提供一个数字而不是月份名称。要解决此问题,您可以将时间段作为字符串获取 - 但是,这不适用于扩展边界方法,因此您可能会得到空结果(即 [Mon, Tues, Fri,太阳]).
如果你想要,它就在这里:
"aggregations": {
"dayOfWeek": {
"terms": {
"script": "doc['timestamp'].date.dayOfWeek().getAsText()",
"order": {
"_term": "asc"
}
}
}
即使这对您没有帮助,也希望其他人能找到它并从中受益。
关于elasticsearch - 如何显示日期名称,在 Elasticsearch 中使用日期直方图聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29002152/