Для приведенной ниже структуры данных:
{
"sprints": [
{
"id": 17193,
"name": "Sprint 12"
},
{
"id": 16510,
"name": "Sprint 11"
}
],
"velocityStatEntries": {
"16510": {
"estimated": {
"value": 49
},
"completed": {
"value": 36
}
},
"17193": {
"estimated": {
"value": 52
},
"completed": {
"value": 70
}
}
}
}
Учитывая это, я хочу иметь возможность создавать объект Elasticsearch, который легче обрабатывать, добавляя значения полей Estimated и Completed к спринтам с помощьюих совпадающие идентификаторы.
В идеале я хотел бы справиться с этим без написания Ruby, но я не нахожу нативное решение logstash, которое обрабатывает этот сценарий.
Сначала я разбил данные наполе sprints использует split, поэтому у меня есть только один объект sprints, и я могу использовать [sprints] [id], чтобы узнать, какой спринт я обрабатываю.
Затем я попытался работать с *Фильтр 1010 * mutate одним из двух способов: - используя merge , чтобы добавить объект [speedStateEntries] [] к текущему спринту, - используя add_field , чтобы добавить два поляМне нужно
Синтаксически это возможно?В идеале я хотел бы иметь возможность выполнять «двойную замену», получая расчетное время для текущего спринта, например:
add_field => {
"estimatedTime" => "%{[velocityStatEntries][%{[sprints][id]}][estimated][value]}"
}
, но, похоже, это работает только с жестко закодированным форматом, таким как"estimatedTime" => "%{[velocityStatEntries][1234][estimated][value]}"
Нужно ли для этого использовать формат Ruby?