Ответ 1
Ответ, который вы получили, верен, но я думаю, что стоит остановиться подробнее.
Обновление фактически вызывает повторное открытие считывателя индекса lucene, так что моментальный снимок данных, по которым вы можете выполнять поиск, обновляется. Эта функция Lucene является частью API Lucene в режиме реального времени.
Обновление asticsearch делает ваши документы доступными для поиска, но не гарантирует, что они будут записаны на диск в постоянное хранилище, поскольку не вызывает fsync, что не гарантирует долговечность. Что делает ваши данные долговечными, так это фиксация lucene, которая намного дороже.
Хотя вы можете вызывать lucene reopen каждую секунду, вы не можете делать то же самое с lucene commit.
Через lucene вы можете получить новые документы, доступные для поиска, практически в реальном времени, часто вызывая reopen, но вам все равно нужно вызвать commit, чтобы гарантировать, что данные записываются на диск и синхронизируются, что обеспечивает безопасность.
Elasticsearch решает эту "проблему", добавляя журнал транзакций для каждого сегмента (фактически, индекс lucene), где хранятся операции записи, которые еще не были зафиксированы. Журнал транзакций находится в безопасном и безопасном состоянии, поэтому вы получаете долговечность в любой момент времени, даже для документов, которые еще не были зафиксированы. Вы можете искать документы практически в реальном времени, так как обновление происходит автоматически каждую секунду, и вы также можете быть уверены, что в случае чего-то плохого журнал транзакций можно будет воспроизвести, чтобы восстановить в конечном итоге потерянные документы. Приятная вещь в журнале транзакций заключается в том, что он может использоваться для других целей, например, для предоставления в реальном времени идентификатора.
. asticsearch flush эффективно запускает фиксацию lucene и очищает также журнал транзакций, поскольку, как только данные фиксируются на уровне lucene, долговечность может быть гарантирована самой lucene. Flush также представлен в виде API и может быть изменен, хотя обычно это не является необходимым. Сброс происходит автоматически в зависимости от того, сколько операций добавлено в журнал транзакций, насколько они велики и когда произошла последняя очистка.