Единственная серьезная проблема, с которой я столкнулся при использовании elasticsearch в качестве основного хранилища данных, — это задержка индексации при индексировании нового документа. Elasticsearch — это поисковая система «почти» в реальном времени... квалификатор «near» необходим, потому что после индексации документа происходит задержка до 1 секунды, прежде чем он будет найден во время поиска.
Вот ссылка на соответствующую часть руководства по поиску эластичных материалов:
Поиск почти в реальном времени в elasticsearch
Это была проблема в созданном мной веб-приложении, содержащем страницу со списком пользователей. Мой сценарий заключался в том, что администратор нажал кнопку «новый пользователь» на странице списка пользователей, а затем он был перенесен на другую страницу для создания пользователя. Когда администратор сохранил документ пользователя, он был перенаправлен на страницу списка, но вновь созданный пользователь не появился из-за задержки индексации elasticsearch.
В руководстве elasticsearch говорится, что вы можете вручную обновить индекс, но не делать этого в рабочей среде.
... не выполняйте обновление вручную каждый раз, когда индексируете рабочий документ; это повредит вашей производительности. Вместо этого ваше приложение должно понимать, что Elasticsearch работает почти в реальном времени, и учитывать это.
Я все равно обновил индекс, потому что создание новых пользователей — очень редкое явление в моем приложении, но это не очень хорошее решение.
Пару месяцев назад я задал вопрос, как другие люди решают эту проблему:
Как справиться с задержкой индекса Elasticsearch
В ответе на этот вопрос было предложение, которое мне понравилось. По сути, автор предлагает вставлять запись в список вручную, используя предоставленные вами данные, вместо того, чтобы ждать ответа от сервера. Это должно работать до тех пор, пока вы не полагаетесь на поля, сгенерированные сервером.
В конечном счете, вы не должны сталкиваться с этой проблемой с такой базой данных, как Couchbase.
person
Troy
schedule
15.02.2016