Предположим, у нас есть пачка джейсонов. Каждый джейсон - пользователь, кол-во вещей и некоторая другая информация. Подобные джейсоны для каждого пользователя мы получаем каждый час и иногда для конкретного пользователя эти данные ничем не отличаются кроме таймстемпа. Нам бы хотелось просуммировать кол-во вещей у всех пользователей, но для каждого пользователя взять один последний джейсон с актуальной информацией. Как это сделать с помощью аггрегаций?
По сути мы ведь хотим данные разбить на корзины по пользователю, в корзинах данные отфильтровать и взять значение поля в последнем джейсоне.
In the following example we group the questions by tag and per tag we show the last active question. For each question only the title field is being included in the source.
А создать подобный запрос для исторических данных в принципе возможно?
И как лучше реализовать разделение данных на мгновенные и исторические, можно сделать это на стороне logstash ?
По идее нам нужно искать документ с полем "пользователь" с определенным значением в индексе мгновенных данных и если он там есть заменять его на новый?
Вам надо сделать так чтобы документы для одного и того же пользователя имели один и тот же id (например id этого пользователя). Тогда можно просто этот документ снова и снова индексировать и у вас всегда будет только одна копия этого документа в индексе.
Как это сделать в кибане - не знаю. Top hits вам дадут записи, которые вам нужны, но можно-ли как-то заставить кибану эти записи обрабатывать - я не уверен. Я в кибане не спец.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.