Единственият значим проблем, с който съм се сблъсквал досега с използването на elasticsearch като основно хранилище на данни, е забавянето на индексирането, когато индексирате нов документ. Elasticsearch е "почти" търсачка в реално време... квалификаторът "близо" е необходим, защото има до 1 секунда забавяне, след като индексирате документ, преди той да бъде намерен по време на търсене.
Ето връзка към съответната част от ръководството за elasticsearch:
Търсене в почти реално време в elasticsearch
Това беше проблем в създадено от мен уеб приложение, което съдържа страница със списък на потребителите. Моят сценарий беше, че администраторът щракна върху бутона „нов потребител“ на страница със списък на потребители и след това беше прехвърлен на друга страница, за да създаде потребителя. Когато администраторът запази потребителския документ, той беше пренасочен към страницата със списък, но новосъздаденият потребител не се появи поради забавянето на индексирането на elasticsearch.
Ръководството за elasticsearch казва, че можете ръчно да опресните индекса, но казва да не го правите в производството.
...не правете ръчно опресняване всеки път, когато индексирате документ в производство; това ще навреди на представянето ви. Вместо това вашето приложение трябва да е наясно с естеството на Elasticsearch в почти реално време и да го съобразява.
Така или иначе опресних индекса, тъй като създаването на нови потребители е много рядко явление в приложението ми, но не е много добро решение.
Публикувах въпрос преди няколко месеца, питайки как други хора заобикалят този проблем:
Как да се справите със забавянето на индекса на Elasticsearch
Отговорът на този въпрос имаше предложение, което ми хареса. По принцип авторът предлага да вмъкнете записа в списъка ръчно, като използвате данните, които изпращате, вместо да чакате връщане от сървъра. Това трябва да работи, стига да не разчитате на полета, генерирани от сървъра.
В крайна сметка обаче не трябва да се сблъсквате с този проблем с база данни като Couchbase.
person
Troy
schedule
15.02.2016