从日期字段获取在特定小时范围内匹配的文档

时间:2019-06-20 15:41:01

标签: elasticsearch

我有一个映射形式的索引:

        "mappings": {
                    "created_time" :{
                        "type": "date"
                    },
                    "user_id": {
                        "type": "keyword",
                    }
                }
            }
        }

我想查找在某个小时范围内(例如说晚上10点到12点)创建的所有用户。

我不确定该怎么做,因为我读过各种聚合方法,但似乎没有合适的方法。

1 个答案:

答案 0 :(得分:1)

您要使用名为script query的东西。

它看起来像这样:

query: {
      bool: {
          "filter": {
              "script": {
                   "script": {
                      "source": "doc['created_time'].getHourOfDay() >= min && doc['created_time'].getHourOfDay() < max",
                      "lang": "expression",
                      "params": {
                        "min": 10,
                        "max": 12
                      }
                   }
             }
       }
}

这将为您提供所需的匹配。