我正在尝试编写一个查询,该查询只返回当天的当前小时的结果,x天返回。例如,如果现在的时间是12:00,我希望在14天后的每一天11:00-12:00范围内得到结果。我见过Elasticsearch sum total values for specific hours within a month,但要求我选择固定时间。只需从"现在"中提取小时不会做,因为回到1小时可能会导致昨天,然后范围不会起作用。
答案 0 :(得分:0)
您可以使用带有多个范围过滤器的过滤布尔查询。您可以在代码中计算小时日期范围,并动态构建X天数的查询。以下示例是在00:30计算的3天(因此跨越日界)
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"should": [
{ "range": {
"myDateField" : {
"gte" : "2015-11-18T23:30:00.00",
"lt" : "2015-11-19T00:30:00.00"
}
}},
{ "range": {
"myDateField" : {
"gte" : "2015-11-17T23:30:00.00",
"lt" : "2015-11-18T00:30:00.00"
}
}},
{ "range": {
"myDateField" : {
"gte" : "2015-11-16T23:30:00.00",
"lt" : "2015-11-17T00:30:00.00"
}
}}
]
}
}
}
}
}