我是否可以在默认timestamp
字段上进行范围查询,忽略date
值,即仅使用时间戳中的时间 - 比如说每天2小时?
我的意图是搜索所有文件,但不包括在晚上9点到12点之间编入索引的文件(我已经看到过滤日期范围的例子)。
时间戳示例如下:
"@timestamp": [
"2015-12-21T15:18:17.120Z"
]
Elasticsearch版本:1.5.2
答案 0 :(得分:0)
我的第一个想法是在Elasticsearch查询中使用日期数学,例如如果你在下午1点运行查询,这将有效:
{
"query": {
"range" : {
"@timestamp" : {
"gte": "now-16h/h",
"lte": "now-1h/h"
}
}
}
}
(注意时区)。
据我所知,唯一的另一种可能性是使用scripting。
另请注意,您正在运行非常旧版本的Elasticsearch。
修改如果您只需要绝对日期,那么请检查您的@timestamp
字段的外观,并使用相同的格式,例如在我的Elasticsearch上,它将是:
{
"query": {
"range" : {
"@timestamp" : {
"gte": "2015-03-20T01:21:00.01Z",
"lte": "2015-03-21T01:12:00.04Z"
}
}
}
}