ИСПОЛЬЗОВАНИЕ ЭЛАСТИЧЕСКОГО ПОИСКА 6.2 Итак, у меня есть глубоко вложенная структура документа, которая имеет все правильное отображение (вложенное, текстовое, ключевое слово и т. Д.).Пример документа выглядит следующим образом:
{
"type": "Certain Type",
"lineItems": [
{
"lineValue": 10,
"events": [
{
"name": "CREATED",
"timeStamp": "TIME VALUE"
},
{
"name": "ENDED",
"timeStamp": "TIME VALUE"
}
]
}
]
}
Я хочу узнать среднее время, необходимое для перехода всех строк из CREATED в ENDED.
Я создал следующий запрос
GET /_search
{
"size": 0,
"query": {
"match": {
"type": "Certain Type"
}
},
"aggs": {
"avg time": {
"nested": {
"path": "lineItems.events"
},
"aggs": {
"avg time": {
"avg": {
"script": {
"lang": "painless",
"source": """
long timeDiff = 0;
long fromTime = 0;
long toTime = 0;
if(doc['lineItems.events.name.keyword'] == "CREATED"){
fromTime = doc['lineItems.events.timeValue'].value.getMillis();
}
else if(doc['lineItems.events.name.keyword'] == "ENDED"){
toTime = doc['lineItems.events.timeValue'].value.getMillis();
}
timeDiff = toTime-fromTime;
return (timeDiff)
"""
}
}
}
}
}
}
}
Результатом было то, что я получил 0 в качестве результата агрегации, что неверно.
Есть ли способ достичь этого?