elasticsearch中的@timestamp范围查询

时间:2017-03-20 14:08:29

标签: elasticsearch lucene

我是否可以在默认timestamp字段上进行范围查询,忽略date值,即仅使用时间戳中的时间 - 比如说每天2小时?

我的意图是搜索所有文件,但不包括在晚上9点到12点之间编入索引的文件(我已经看到过滤日期范围的例子)。

时间戳示例如下:

"@timestamp": [
                  "2015-12-21T15:18:17.120Z"
               ]

Elasticsearch版本:1.5.2

1 个答案:

答案 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"

            }
        }
  }
}