2016-05-07 3 views
1

Это может быть глупый вопрос, но я не смог отфильтровать индексы elasticsearch с помощью поля datetime. Я должен что-то упустить.Elasticsearch не может фильтровать по диапазону datetime

Это отображение:

"created_at": { 
    "type": "date", 
    "format": "strict_date_optional_time||epoch_millis" 
}, 

Это то, что я получил:

{ 
    "_index": "myindex", 
    "_type": "myindextype", 
    "_id": "21c", 
    "_score": 1, 
    "_source": { 
     "code": "21c", 
     "name": "hello", 
     ... 
     "created_at": "2015-04-30T13:10:50.107769Z" 
    } 
}, 

С помощью этого запроса:

"query": { 
    "filtered": { 
    "query": {}, 
    "filter": { 
     "range": { 
     "created_at": { 
      "gte": "2015-05-02T13:10:50.107769Z" 
      "format": "strict_date_optional_time||epoch_millis" 
}}}}} 

Я бы ожидать, чтобы отфильтровать записи выше. Но он ничего не возвращает.

Есть ли проблема с форматом времени? Потому что это прямо из Django Rest Framework serializers. Они утверждают, что это ISO 8601 формат и elasticsearch претензий same.

Я также хотел бы отфильтровать их по более простой дате типа «2015-05-02».

Я застрял. Заранее спасибо.

Редактировать: Неважно, что я пишу в фильтр диапазона. Он всегда возвращает все записи.

ответ

1

Это сработало. Я попробовал много разных вещей и в какой-то момент потерял свой путь.

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "range": { 
      "created_at": { 
      "gte": "2015-05-02" 
      } 
     } 
     } 
    } 
    } 
} 
Смежные вопросы