目前,我已经知道如何从(时间戳)日期字段中过滤日期范围 . 这很简单:
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
但是如果你对gte:“8:00:00”和lte:“10:00:00”等小时的范围感兴趣,如何过滤日期?这可能吗?
换句话说,我的要求是:如何在本月(15-11-01 / 15-11-30)发生所有事件,但仅限于上午8:00至10:00之间?
3 回答
如果我正确地理解了你的问题,那么我认为你必须添加新的字段,其中只有时间索引
然后你可以像这样查询
这有帮助吗?
您可以使用
range
过滤器来过滤正确的日期,然后使用script
过滤器来过滤所需的小时数,如下所示:请注意,您需要确保enable dynamic scripting才能使此查询生效 .
以下是我曾经用过的只从今天开始到下午6点的结果:
重要的部分是"now-24h/d",它将围绕当天的午夜/开始,虽然它有点棘手,因为它取决于你是否使用gt / lt(e),详见reference doc .