ElasticSearch为时间戳和日期时间返回不同的结果

时间:2014-11-10 16:14:11

标签: elasticsearch

我有一个索引,其字段的映射如下:

"ts": {
    "index": "not_analyzed",
    "type": "date"
},

我尝试了两个几乎相同的查询并得到了不同的结果。

首先

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "or": {
          "filters": [
            {
              "range": {
                "ts": {
                  "from": 1414799400000,
                  "to": 1414799999000
                }
              }
            }
          ]
        }
      }
    }
  }
}

都给:

"hits": {
      "total": 1934514,
      "max_score": 0,
      "hits": []
   } 

第二

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "or": {
          "filters": [
            {
              "range": {
                "ts": {
                  "from": "2014-10-31T23:00:00",
                  "to": "2014-10-31T23:59:59"
                }
              }
            }
          ]
        }
      }
    }
  }
}

都给:

"hits": {
      "total": 11333856,
      "max_score": 0,
      "hits": []
   }

Weren他们应该返回相同的结果吗?

1 个答案:

答案 0 :(得分:0)

使用epoch_converter提供的时间戳和日期时间不等同。

1414799400000 => Fri, 31 Oct 2014 23:50:00 GMT]
1414799999000 => Fri, 31 Oct 2014 23:59:59 GMT

使用datetime的范围查询是:     2014-10-31T23:00:00     2014-10-31T23:59:59

简而言之,这两个范围并不相同。