поиск по дате (timestamp)

230 views
Skip to first unread message

Max Seleznev

unread,
May 24, 2013, 3:21:54 PM5/24/13
to elastics...@googlegroups.com
как правильно хранить дату timestamp, обновлять ее и искать по ней?

касается только timestamp 
или как лучше хранить дату в elasticsearch?

Igor Motov

unread,
May 27, 2013, 7:43:02 PM5/27/13
to elastics...@googlegroups.com
С timestamp все просто - надо ее просто включить, как описано здесь - http://www.elasticsearch.org/guide/reference/mapping/timestamp-field/ Искать можно также как и по любой другой дате. Обновляться она сама будет при обновлении документа. 

Max Seleznev

unread,
May 27, 2013, 7:54:55 PM5/27/13
to elastics...@googlegroups.com
Не, мне не надо чтобы она обновлялась при обновлении документа автоматически у меня прочто дата приходит в timestamp формате, и мне надо найти документы у которых дата > чем current date - 8 days. Вот я спрашиваю как оучше хранить дату в timestams или date, и могли бы вы мне показать запрос как найти документы у которых поле дата старше чем сегодняшняя дата минус 8 дней

Igor Motov

unread,
May 27, 2013, 8:14:26 PM5/27/13
to elastics...@googlegroups.com
Хранить лучше в формате date http://www.elasticsearch.org/guide/reference/mapping/date-format/ 

Max Seleznev

unread,
May 27, 2013, 8:21:16 PM5/27/13
to elastics...@googlegroups.com
А искать по ней как? Все доки которые больше конкретной даты, у вас нет простого примера работы с датой?

Igor Motov

unread,
May 27, 2013, 8:31:17 PM5/27/13
to elastics...@googlegroups.com
А вы попробуйте сделать пример сами, и если он не заработает, то присылайте - поправим. Чтобы получить сегодняшнюю дату минус 8 дней надо указать now-8d вместо даты.

Max Seleznev

unread,
Jun 10, 2013, 1:20:16 PM6/10/13
to elastics...@googlegroups.com
сорри были проблемы с серверами, я составил тпкой запрос и хотел уточнить правильно ли он будет искать?

дату храню в виде "datetime": { "type": "date", "format": "date_optional_time" },

вставка "datetime": "1111885200", (tiemstamp)

запрос "range": {  "datetime": { "ge":"now-8d"} }

правильно ли я делаю? не будет ли у меня потом проблем с датой?

дата нужно только для правильного поиска свежих продуктов 

Igor Motov

unread,
Jun 10, 2013, 4:31:48 PM6/10/13
to elastics...@googlegroups.com
С запросом проблем быть не должно. А вот дата выглядить очень маленькой - либо нулей в конце не хватает, либо она из начала 70х. Да, если range используется как фильтр, то более оптимально будет округлить дату до часа или даже дня: now-8d/h или now-8d/d. Иначе этот фильтр кэшироваться не будет.

Max Seleznev

unread,
Jun 10, 2013, 5:09:07 PM6/10/13
to elastics...@googlegroups.com
незнаю дата внолне корекная 1111885200 это Sun, 27 Mar 2005 01:00:00 GMT

хотел спросить а если я буду держать  timestamp в elasticsearch как целое число как поиск будет быстрее проходить?
ища по дате или числу?

Igor Motov

unread,
Jun 10, 2013, 5:15:25 PM6/10/13
to elastics...@googlegroups.com
Для 27-го марта у нее 3-х нулей в конце не хватает. Должно быть 1111885200000. 

Max Seleznev

unread,
Jun 10, 2013, 5:30:38 PM6/10/13
to elastics...@googlegroups.com
если в милисекундах, то да нехватает нулей 000, но как я знаю милисекунды игнорируются, а стандартная длина 10 знаков
вы видимо через js смотрите timestamp значение?

ну ладно, речь не в этот, как наиболее эфективно сделать поиск по дате, так как быть, если сохранить дату как целове число и не дата, какой поиск лучше отрабатает?
Reply all
Reply to author
Forward
0 new messages