在Elasticsearch版本1.x中执行时的以下查询

正在考虑在2016年6月15日之后创建的文档,即文档在6/15/2016的时间是凌晨12点以后。正在考虑文档到6/15/2016 23:59:59.999。

但是,对于新版本的ES 2.x,范围查询已停止考虑2016年6月15日时间超过12 Am的文档。现在它正在考虑直到6/14/2016 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"
           }
         }
       }
     ]
   }
 }
}

最佳答案

在用于OP中查询的elasticsearch 2.x中,上限为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"
           }
         }
       }
     ]
   }
 }
}

关于elasticsearch - 日期范围查询Elasticsearch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38330006/

10-17 03:04