В настоящее время я пытаюсь сгруппировать поле на основе одного поля и получить сумму других полей относительно соответствующего поля, используемого для группировки. Я хочу получить новое значение, которое должно быть делением суммированного поля. Я поставлю текущий запрос, который у меня есть:Разделение двух полей в Elasticsearch
В моем запросе я агрегирую их на основе поля («a_name») и суммируя «потратить» и «получить». Я хочу получить новое поле, которое будет отношением суммы (потратить/получить)
Я попытался добавить скрипт, но я получаю NaN, также, чтобы включить это; я должен был дать им первый в elasticsearch.yml файле
script.engine.groovy.inline.aggs: на
Query
GET /index1/table1/_search
{
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*",
"analyze_wildcard": true
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"account_id": 29
}
}
],
"must_not": []
}
}
}
},
"aggs": {
"custom_name": {
"terms": {
"field": "a_name"
},
"aggs": {
"spe": {
"sum": {
"field": "spend"
}
},
"gained": {
"sum": {
"field": "gain"
}
},
"rati": {
"sum": {
"script": "doc['spend'].value/doc['gain'].value"
}
}
}
}
}
}
Данный запрос показывает мне 'NaN' в выходе , Если я заменю деление на умножение, запрос будет работать.
По сути то, что я ищу, чтобы разделить два моих агрегаторов «НПП» и «получил»
Благодарности!
Hi. Спасибо за ответ ! Могу ли я просто делить два моих агрегатора вместо «bucket_path»? –
Также, когда я использую сценарий выше его, не показывая желаемое значение. { "ключ": "прокси", "doc_count": 2325, "рати": { "значение": 219,782931785929 }, "получил": { "значение": 389747,8 }, «спе ": { " value ": 988445.1700000003 } –
Спасибо! Как я буду делать это в ES1.6? –