Пожалуйста, ознакомьтесь с приведенным ниже примером сопоставления, которое я построил на основе данных, предоставленных вами в решении для запросов и агрегирования, которое вы хотели посмотреть.
Отображение:
PUT <your_index_name>
{
"mappings": {
"mydocs": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd"
},
"budget": {
"type": "float"
}
}
}
}
}
Агрегация
Я использовал следующие типы агрегации:
Также я предполагаю, что формат даты будет yyyy-MM-dd
, а budget
будет иметь тип данных float
.
Ниже приведен запрос агрегации.
POST <your_index_name>/_search
{
"size": 0,
"query": {
"range": {
"date": {
"gte": "2019-01-01",
"lte": "2019-01-06"
}
}
},
"aggs": {
"my_date": {
"date_histogram": {
"field": "date",
"interval": "4d",
"format": "yyyy-MM-dd"
},
"aggs": {
"sum_budget": {
"sum": {
"field": "budget"
}
},
"budget_derivative": {
"derivative": {
"buckets_path": "sum_budget"
}
},
"budget_evolution": {
"bucket_script": {
"buckets_path": {
"input_1": "sum_budget",
"input_2": "budget_derivative"
},
"script": "(params.input_2/params.input_1)*(100)"
}
}
}
}
}
}
Обратите внимание, что искомый результат будет в части budget_evolution
.
Надеюсь, это поможет!