У меня есть две агрегирования полей: `['field1', 'field2']. Оба поля - это агрегирования. То, как elasticsearch возвращает агрегаты, не очень удобно со всеми этими ведрами, а также вложением гнездования и вставки ковша. У меня возникли проблемы по преобразованию elasticsearch результатов к списку dicts например,Данные Elasticsearch для более структурированной формы
elasticsearch поддельные результаты:
'aggregations':{
'field1':{
'buckets':[
{
'key':'value1',
'field2':{
'buckets':[
{
'key':'1.1.1.1',
'doc_count':15
},
{
'key': '2.2.2.2',
'doc_count': 12
}
]
}
},
{
'key': 'value2',
'field2': {
'buckets': [
{
'key': '3.3.3.3',
'doc_count': 15
},
{
'key': '4.4.4.4',
'doc_count': 12
}
]
}
},
{
'key': 'value3',
'field2': {
'buckets': [
{
'key': '5.5.5.5',
'doc_count': 15
},
{
'key': '6.6.6.6',
'doc_count': 12
}
]
}
}
]
}
}
Я хотел бы результат быть в виде настоя:
[{'field1':'value1', 'field2':'1.1.1.1'},
{'field1':'value1', 'field2':'2.2.2.2'},
{'field1':'value2', 'field2':'3.3.3.3'},
{'field1':'value2', 'field2':'4.4.4.4'},
{'field1':'value3', 'field2':'5.5.5.5'},
{'field1':'value3', 'field2':'6.6.6.6'} ]
подобно нормальная база данных со строками и столбцами. Имя агрегации должно быть именем столбца, которое необходимо. Я подумал о том, чтобы использовать некоторое древовидное представление данных, а затем после создания структуры данных дерева с помощью dfs создайте каждую строку результатов. Но нужно место для начала.
Почему не разбор ведра на стороне клиента? 2-3 строки Python позаботятся о преобразовании вашего результата в нужную структуру. – Val
@Val Я говорю о стороне клиента. На мой взгляд, это не очень простая проблема. Kibana делает это во втором интерфейсе, используя аналогичный подход со связанными списками и перемещая ведра и метрики. – Apostolos