【问题标题】:@timestamp range query in elasticsearchelasticsearch中的@timestamp范围查询
【发布时间】:2019-09-18 15:59:39
【问题描述】:

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

我的意图是搜索所有文档,但排除在晚上 9 点到凌晨 12 点之间编入索引的文档(我已经看到了过滤日期范围的示例)。

时间戳示例如下:

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

Elasticsearch 版本:1.5.2

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    我的第一个想法是在 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"
    
                }
            }
      }
    }
    

    【讨论】:

    • 故意写了一个日期是2015年(不是每天都在查询,可以查询一年前的数据)
    • 基本上你只需要注意日期的格式,然后你可以简单地使用相同的格式和范围 querw,请参阅我的编辑版本
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多