Вы можете использовать Поля скрипта , которые будут возвращать оценку скрипта (на основе разных полей) для каждого попадания
Попробуйте что-то вроде ниже:
GET test1/_search
{
"query" : {
"match_all": {}
},
"script_fields" : {
"totalcost" : {
"script" : {
"lang": "painless",
"source": "doc['price'].value * doc['qty'].value"
}
},
"sumpriceandqty" : {
"script" : {
"lang": "painless",
"source": "doc['price'].value + doc['qty'].value"
}
}
}
}
РЕДАКТИРОВАТЬ: Обновленное имя индекса
Я проверил его на локальном, он работает, вот вывод:
{
"took": 67,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "test1",
"_type": "doc",
"_id": "_xEopmgBbjdm4NNpj-tl",
"_score": 1,
"fields": {
"sumpriceandqty": [
3.2000000029802322
],
"totalcost": [
0.6000000089406967
]
}
}
]
}
}