2013-05-11 2 views
2

Моего elasticsearch имеет данные, в частности, что-то подобное для дат:elasticsearch дата запроса по диапазону

{ 
    "startTime": { 
    "type": "string", 
    "format": "yyyy/MM/dd", 
    "index": "analyzed", 
    "analyzer": "keyword" 
    } 
} 

Я добавляю date range picker и хочу использовать даты выбрал идти elasticsearch запроса для данных с STARTTIME внутри этого диапазона выбран. Я не уверен, как структурировать этот запрос в elasticsearch, или если он будет работать даже с этим строковым полем (хотя я могу его поменять).

Может ли кто-нибудь помочь мне здесь?

ответ

7

Ваше поле - это строка, свойство формата игнорируется. Вы должны изменить свое сопоставление и использовать тип date. Посмотрите here, чтобы просмотреть основные типы, доступные в elasticsearch.

Я бы использовал фильтр вместо запроса. Он будет кэшироваться, тем самым быстрее. Ниже приведен пример за последние 7 дней:

{ 
    "filter" : { 
     "range" : { 
      "PublishTime" : { 
       "from" : "20130505T000000", 
       "to" : "20131105T235959" 
      } 
     } 
    } 
} 

Обратите внимание, что если вы используете фильтр, как это он будет тот же фильтр в течение всего дня, таким образом, вы бы хорошо использовать кэш.

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