Имам множество индекси на ElasticSearch, разделени на множество машини, в които поглъщам регистрационни файлове, използвайки logstash. Излагам данните чрез REST API. API слоят търси няколко термина (с помощта на ElasticSearch Java API) и представя на потребителя резултатите.
Сега, ако потребителят разглежда резултатите в браузър, може да има погълнати нови регистрационни файлове, които съответстват на същите заявки и филтри, които потребителят гледа сега. Бих искал API слоят да бъде уведомен, че има нови елементи, които отговарят на заявката. Така че, ако получа същата заявка за API, мога да изпратя обратно само нови данни (делта) или да изпратя отговор HTTP 304 „Непроменен“.
Разгледах API на percolator, но това прави изглежда не прави това, което искам - изглежда, че дава на списъка със заявки даден документ, който предстои да бъде вмъкнат, ще съответства. Моите изисквания са следните:
- Същият потребител може да иска да провери за нови съобщения в журнала след няколко секунди или няколко дни.
- Множество потребители може да търсят едни и същи термини, но те ще бъдат в различни страници (ще внедря пагинация с помощта на SearchRequestBuilder.setSize API.) Така че променените елементи ще бъдат различни за различните потребители, тъй като са на различни страници от един и същ изход.
Има ли някакъв начин да направите това по мащабируем начин?