我有两个字段子聚合:`['field1', 'field2']。这两个字段都是术语聚合。对于所有这些桶和嵌套以及桶嵌套,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 创建树数据结构后创建结果的每一行。但需要一个地方开始。