我尝试通过聚合按小时将文档分组一天,但总是得到异常“预期字段名称但得到了[START_OBJECT]”?有什么问题?
{
"query" : {
"bool" : {
"must" : {
"range" : {
"timestamp" : {
"from" : "2017-08-14 00:00:00",
"to" : "2017-08-15 00:00:00",
"include_lower" : true,
"include_upper" : true
}
}
}
}
},
"aggs": {
"result_by_hours": {
"histogram": {
"script": "doc.timestamp.date.getHourOfDay()",
"interval": 1
}
}
}
}
我期望在昨天返回每小时的文件数量。如何使用动态实时代替“2017-08-14 - 2017-08-15”?
提前致谢:)
答案 0 :(得分:0)
根据ES版本,您可以使用相对于"现在"的范围过滤器/查询,从现在开始 - 1d / d将在1天后返回。
请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
上的示例对于aggs,你也可以使用date_histogram和interval来按照例如一小时的间隔进行分组 在ES 5.5中: 查询:
"range" : {
"timestamp" : {
"gte" : "now-1d/d,
"lte" : "now/d"
}
}
AGGS:
{
"aggs" : {
"values_over_time" : {
"date_histogram" : {
"field" : "timestamp",
"interval" : "1h"
}
}
}
}