kibana 6脚本化字段日期范围

时间:2019-03-07 01:15:21

标签: elasticsearch kibana

使用kibana 6.3

我创建了这个脚本字段,以仅从 YYYY-MM-DDT00:00:00

hour_utc:

doc['@timestamp'].date.hourOfDay

然后我可以创建一个执行此操作的过滤器:

在6到22之间过滤,对于我列出的任何日期,只能获得06-22的小时。这很好。但是我还需要能够做22到6

如果日期为01/01/2019至01/04/2019,则 过滤器6到22可以为您提供:

01/01/2019T06:00:00 to 01/01/2019T22:00:00
01/02/2019T06:00:00 to 01/02/2019T22:00:00
01/03/2019T06:00:00 to 01/03/2019T22:00:00
01/04/2019T06:00:00 to 01/04/2019T22:00:00

如果日期为01/01/2019至01/04/2019,则 过滤器22到06可以为您提供:

01/01/2019T22:00:00 to 01/02/2019T06:00:00
01/02/2019T22:00:00 to 01/03/2019T06:00:00
01/03/2019T22:00:00 to 01/04/2019T06:00:00

我的问题是我怎么做22-06?

1 个答案:

答案 0 :(得分:0)

一个选择是创建两个合并在bool应该子句中的过滤器:

  • 22至24岁的人
  • 一个执行0到6的动作

伪查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "hour": {
              "gte": 22
            }
          }
        },
        {
          "range": {
            "hour": {
              "gte": 0,
              "lte": 6
            }
          }
        }
      ]
    }
  }
}

另一个选择是将您的脚本字段移动6小时

doc['@timestamp'].date.hourOfDay - 6

然后您可以简单地检查它在16到24之间。