Я пытаюсь создать запрос для вывода отношения.Первое число - сумма агрегации поля OutageTime.Второе число - это поле со сценарием.
Вот мое отображение:
{
"ms-services-2018.10.11": {
"mappings": {
"doc": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"EmailDirection": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"OutageTime": {
"type": "long"
},
"RequestedDateTime": {
"type": "date"
},
"SearchRangeMinutes": {
"type": "long"
},
"host": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"isServiceAvailable": {
"type": "boolean"
},
"tags": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
},
"ms-services-2018.10.12": {
"mappings": {
"doc": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"EmailDirection": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"OutageTime": {
"type": "long"
},
"RequestedDateTime": {
"type": "date"
},
"SearchRangeMinutes": {
"type": "long"
},
"host": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"isServiceAvailable": {
"type": "boolean"
},
"tags": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
Вот мой запрос:
GET index-*/_search
{
"_source": {
"includes": [ "RequestedDateTime"]
},
"aggs":{
"TotalOutageTimSeconds":{
"sum":{
"script":"doc['OutageTime'].value"
}
}
},
"sort":[{
"RequestedDateTime":{
"order":"asc"
}
}],
"size": 1,
"script_fields":{
"AvailabilityRatio":{
"script":"(1 - (TotalOutageTimSeconds / (new Date().getTime() - doc['RequestedDateTime'].value.getMillis()) / 1000))"
}
}
}
Основано на моем отображении и запросе,Можно ли использовать результат агрегирования (TotalOutageTimSeconds) в скриптовом запросе (AvailabilityRatio)?