У меня есть несколько индексов ElasticSearch, разделенных на несколько компьютеров, в которые я загружаю журналы с помощью logstash. Я выставляю данные через REST API. Уровень API выполняет поиск по нескольким терминам (с использованием ElasticSearch Java API) и предоставляет пользователю результаты.
Теперь, если пользователь просматривает результаты в браузере, могут быть загружены новые журналы, соответствующие тем же запросам и фильтрам, которые сейчас просматривает пользователь. Я хотел бы, чтобы уровень API был уведомлен о появлении новых элементов, соответствующих запросу. Итак, если я получаю тот же запрос API, я могу отправить обратно только новые данные (дельта) или отправить ответ HTTP 304 «Не изменено».
Я просмотрел percolator API, но это не так. похоже, не делает то, что я хочу - кажется, он дает список запросов, с которыми будет совпадать данный документ, который должен быть вставлен. Мои требования таковы:
- Тот же пользователь может захотеть проверить наличие новых сообщений журнала через несколько секунд или несколько дней.
- Несколько пользователей могут искать одни и те же термины, но они будут на разных страницах (я реализую разбиение на страницы с помощью API SearchRequestBuilder.setSize). Таким образом, измененные элементы будут разными для разных пользователей, поскольку они находятся на разных страницах одного и того же вывода.
Есть ли способ сделать это масштабируемым образом?