И моя задача состоит в том, чтобы понять в течении какого времени сервис с таким то Id был доступен или недоступен. Я не совсем понимаю какую комбинацию агрегаций тут можно применить. Т.е. я понимаю, что в начале будет фильтр по serviceId или terms aggregation по нему же, но вот что можно применить дальше. Буду очень признателен за любую помощь
Значений timestamp. Сортировка по времени даст мне только записи в порядке возрастания времени, что тоже нужно, но саму задачу никак не решает. Нужно каким-то образом получить только моменты времени, когда status меняется. Т.е. например: ts1 - available, ts4 - unavailable, ts7 - available и т.д.
Теперь понял. Это сложно сделать с помощью elasticsearch c данными в их текущем виде. Основная проблема в том, что в связи с распределенной архитектурой elasticsearch соседние (по времени) состояние могут хранится на разных узлах и любые операции над упорядоченными данными сложны и трудоемки. 2 основных способа - 1) переделать данные так, чтобы пары Unavailable/available хранились в одной записи, которая бы обновлялась по мере изменения значения либо 2) вытаскивать упорядоченный список и обрабатывать его в вашем приложении.
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.