Когда вы отлаживаете то, что доступно из script
GET prices/_search
{
"size": 0,
"aggs": {
"weighted_avg_price": {
"weighted_avg": {
"value": {
"field": "price"
},
"weight": {
"script": "Debug.explain(new ArrayList(params.keySet()))"
}
}
}
}
}
, выдается следующее:
[doc, _source, _doc, _fields]
Ни один из них не содержит информацию о запросе _score
, который вы пытаемся получить доступ, потому что агрегаты работают в контексте, отдельном от оценки на уровне запросов. Это означает, что для значения weight
необходимо либо
- , существующее в do c, либо
- , существующее в do c + be , изменяемое , либо
- будет постоянной времени запроса (например,
42
или 0.1
)
В качестве обходного пути можно применить математическую функцию к извлеченным price
, например
"script": "Math.pow(doc.price.value, 0.5)"