Допустим, у меня есть такое отображение:
{
"mappings": {
"sources": {
"dynamic": "false",
"properties": {
"docId": {
"type": "integer"
},
"length": {
"type": "integer"
},
"sources": {
"type": "nested",
"properties": {
"url": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"domain": {
"type": "keyword"
},
"percent": {
"type": "half_float"
},
"author": {
"type": "text"
},
"year": {
"type": "short"
}
}
}
}
}
},
"settings": {
"index": {
"codec": "best_compression"
}
}
Sources - это массив объектов.я хочу запустить агрегацию, которая находит минимальное значение для каждого домена в процентах, умноженное на длину документов.Мой запрос выглядит следующим образом:
GET /_search
{
"aggs": {
"sources": {
"nested": {
"path": "sources"
},
"aggs": {
"domains": {
"terms": {
"field": "sources.domain"
},
"aggs": {
"min_percent": {
"min": {
"script":{
"lang": "painless",
"inline": "doc['sources.percent'].value * source['length'].value"
}
}
}
}
}
}
}
}
}
Но для каждого домена он возвращает 0, поскольку он не может получить доступ к значению «длина» вне вложенной области видимости.Я читал о reverse_nested, но я не вижу, как я могу использовать его здесь.Я знаю, что могу сразу же сохранить результат умножения, а не вычислять его в запросе, но мне просто стало любопытно, можно ли получить доступ к значениям вне вложенной области видимости в скрипте.Есть ли у вас какие-либо предложения, и возможно ли это вообще?