Я вычисляю продолжительность моих сервис-процессов, используя SUM-Aggregation. Каждый шаг выполненного процесса будет сохранен в Elasticsearch под идентификатором вызова.Elasticsearch: Можно обрабатывать результаты агрегации?
Это то, что я контролирую:
Duration of Request-Processing for ID #123 (calling service #1)
Duration of Server-Response for ID #123 (calling service #1)
**Complete Duration for ID #123**
Duration of Request-Processing for ID #124 (calling service #1)
Duration of Server-Response for ID #124 (calling service #1)
**Complete duration for ID #124**
Фильтр:
{
"from" : 0, "size" :0,
"query" : {
"filtered" : {
"query" : { "match_all" : {}},
"filter" : {
"term" : {
"callingId" : "123",
}
}
}
},
"aggs" : {
"total_duration" : { "sum" : { "field" : "duration" } },
"max_duration":{"max": {"field":"duration"}},
"min_duration":{"min":{"field":"duration"}}
}
}
}
Это возвращает полную длительность процесса, а также говорит мне, какая часть процесса была самой быстрой анс, какая часть была самый медленный.
Дальше: Хочу рассчитать среднее значение длительность процесса производства по обслуживанию. В этом случае я забочусь только об общей продолжительности для каждой службы, поэтому я могу их скопировать.
Как я могу создать средний, минимальный и максимальный из моих total_durations?
EDIT: Я добавил несколько примеров данных, надеюсь, вы сможете с ним работать.
call1:
{
"callerId":"U1",
"operation":"Initialize",
"status":"INITIALIZED",
"duration":1,
"serviceId":"1"
}
{
"callerId":"U1",
"operation":"Calculate",
"status":"STARTED",
"duration":1,
"serviceId":"1"
}
{
"callerId":"U1",
"operation":"Finish",
"status":"FINISHED",
"duration":1200,
"serviceId":"1"
}
sum: 1202
вызов 2:
{
"callerId":"U2",
"operation":"Initialize",
"status":"INITIALIZED",
"duration":2,
"serviceId":"1"
}
{
"callerId":"U2",
"operation":"Calculate",
"status":"STARTED",
"duration":1,
"serviceId":"1"
}
{
"callerId":"U2",
"operation":"Finish",
"status":"FINISHED",
"duration":1030,
"serviceId":"1"
}
sum: 1033
Aggregation для всех Сервис-вызовов для Service ID # 1 Это то, что я хочу, чтобы вычислить:
Max: 1202
Min: 1033
AVG: 1116
Можете ли вы поделиться некоторыми данные? И отображение вашего индекса? –
сделано, я надеюсь, что это полезно – Goot