Вычисление максимального количества параллельных элементов по времени в elasticsearch
Мне нужно вычислить максимальный параллельный опрос людей в эластичном поиске.
Маппинг для этих полей следующий:
"start_at": {"type": "date"}, "end_at": {"type": "date"},
Итак, за неделю мне нужно знать с точностью ~10с, когда в нашей системе было максимум людей и сколько их :-)
Спасибо за помощь :-)
"aggs": { "seconds_histogram": { "date_histogram": { "field": "start_at", "fixed_interval": "1s", "min_doc_count": 0, "extended_bounds": { "min": ..., "max": ... } }, "aggs": { "active_surveys": { "bucket_script": { "buckets_path": { "start": "_key", "end": "_key" }, "script": """ // Survey should have started before or at the bucket second and ended after or at the second. if (doc['start_at'].value.getMillis() <= params.start && doc['end_at'].value.getMillis() >= params.end) { return 1; } else { return 0; } """ } } } }