2014-11-10 3 views
0

У меня есть индекс, который имеет поле с отображением, как это:ElasticSearch возвращает различные результаты для отметки времени и даты-времени

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

Я попробовал 2 почти одинаковые запросы и получил разные результаты.

Первое:

{ 
    "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": [] 
    } 

Разве они не должны возвращать тот же результат?

ответ

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

Короче два диапазона не являются одинаковыми.

+0

Черт, я потратил слишком много времени на смысл. В самом деле, это был главный вопрос. После того, как я изменил временные метки, результаты были немного разными, но добавив «include_lower»: true, «include_upper»: false 'to datetimes, я получил одинаковые результаты – dimzak

Смежные вопросы