Вот пример переиндексации. Но что, если поле date
обновляется во время переиндексации? И после нескольких запросов на прокрутку мне нужно установить интервал даты от date
до now
. Как прокрутка elasticsearch справляется с этой ситуацией: он просто прокручивает документы со старым значением date
или прокручивает вечно, пока не закончатся запросы на обновление?
Как прокрутка в elasticsearch обрабатывает постоянное обновление данных?
Ответы (1)
Принцип работы API сканирования и прокрутки описан через одну ссылку от вашей ссылки, т. е. по адресу http://www.elastic.co/guide/en/elasticsearch/guide/master/scan-scroll.html
На этой странице указано, что
Поиск с прокруткой делает снимок во времени — он не видит никаких изменений, внесенных в индекс после того, как был сделан первоначальный поисковый запрос. Он делает это, сохраняя старые файлы данных, чтобы сохранить свое «представление» о том, как выглядел индекс в момент его запуска.
Таким образом, это означает, что независимо от того, используете ли вы конкретную дату для даты окончания или просто now
, это не будет иметь никакого значения, поскольку моментальный снимок документов, учитываемых вашим запросом прокрутки, всегда будет постоянным в течение всего времени выполнения запроса. .
Допустим, вы отправляете запрос прокрутки прямо сейчас (например, 2015-05-11 06:22:27), тогда никакие новые документы, внесенные в ваш индекс после этой даты, никогда не будут возвращены.