kibana 6 脚本字段日期范围

kibana 6 scripted field dates ranges

使用 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 怎么办?

一个选项是在 bool should 子句中创建两个过滤器组合:

  • 做 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 之间。