日期范围查询 Elasticsearch

Date Range Query Elasticsearch

在 Elasticsearch 版本 1.x

中执行时的以下查询

正在考虑 2016 年 6 月 15 日之后创建的文档,即 6 月 15 日凌晨 12 点以后的文档/2016.It 正在考虑 2016 年 6 月 15 日之前的文档 23:59:59 .999 .

但是对于新版本的 ES 2.x,范围查询已停止考虑时间超过 2016 年 6 月 15 日凌晨 12 点的文档。现在正在考虑 2016 年 6 月 14 日之前的文件 23:59:59.999.

这里到底发生了什么变化?

{
 "from": 0,
 "size": 10,
 "sort": [
   {
     "PRONumber.sort": {
       "order": "desc"
     }
   }
 ],
 "query": {
   "bool": {
     "must": [
       {
         "match": {
           "BOLNumber": {
             "query": "7861254",
             "analyzer": "gtz_search_analyzer",
             "operator": "and"
           }
         }
       },
       {
         "range": {
           "CreatedDate": {
             "gte": "1753-01-01",
             "lte": "2016-06-15"
           }
         }
       }
     ]
   }
 }
}

在 elasticsearch 2.x 中,对于 OP 中的查询,上限是 6/15/2016 00:00:00.000 而不是 6/14/2016 23.59.59.999
documentation 可以看出,您需要在 round-up 的查询中明确指定日期,如下面的示例

所示

示例:

{
 "from": 0,
 "size": 10,
 "sort": [
   {
     "PRONumber.sort": {
       "order": "desc"
     }
   }
 ],
 "query": {
   "bool": {
     "must": [
       {
         "match": {
           "BOLNumber": {
             "query": "7861254",
             "analyzer": "gtz_search_analyzer",
             "operator": "and"
           }
         }
       },
       {
         "range": {
           "CreatedDate": {
             "gte": "1753-01-01",
             "lte": "2016-06-15||/d"
           }
         }
       }
     ]
   }
 }
}