我刚打酱油去了,不好意思

elasticsearch 可以根据某个时间字段不限日期查询在6~10点范围内的数据吗?

匿名 | 发布于2017年06月15日 | 阅读数:8818

系统提示:这个人太懒了,什么问题描述都没有写!

已邀请:

ziyou - 一个学习ELK的Java程序员

赞同来自:

现在的日期字段是一个整体字段,ES不能理解为日期+小时,这种格式的字段,想要处理的话一是可以新增一个时间字段,利用时间字段来判断范围,二是可以在程序中处理日期时间,然后加到搜索条件中取。

eric930721

赞同来自:

不限日期什么意思 查询6-10点可以用 script inline

ziyou - 一个学习ELK的Java程序员

赞同来自:

{
  "query": {
    "bool": {
      "must": [
        {
          "$state": {
            "store": "appState"
          },
          "script": {
            "script": {
              "inline": "def hour = Instant.ofEpochMilli(doc['@timestamp'].value).atZone(ZoneId.of('GMT+8')).toLocalTime().getHour(); return hour < params.min || hour >= params.max;",
              "lang": "painless",
              "params": {
                "min": 8,
                "max": 18
              }
            }
          }
        }
      ]
    }
  }
}

王庆焕 - https://discuss.elastic.co/u/wangqinghuan/

赞同来自:

只能使用上面所说的script query,但是相当于遍历所有的文档。

要回复问题请先登录注册