我正在尝试使用jq为每个对象使用for循环。 Elasticsearch生成的示例输入
{
"took": 202,
"timed_out": false,
"aggregations": {
"aggsDateHistogram": {
"buckets": [
{
"key": 1465974236000,
"search": {
"value": 14
}
},
{
"key": 1465975137000,
"search": {
"value": 16
}
}
]
}
}
}
我希望有一个对象具有键值和来自搜索的值索引的相应值。
{ "date": .aggregations.aggsDateHistogram.buckets[].key, "value": .aggregations.aggsDateHistogram.buckets[].search.value }
这给了我一个对象,但有笛卡尔积,但我只想要像
这样的值key[1] : search[1].value
key[2] : search[2].value
答案 0 :(得分:2)
所以你想产生这个输出吗?
[
{
"key": 1465974236000,
"value": 14
},
{
"key": 1465975137000,
"value": 16
}
]
以下将做到这一点:
.aggregations[].buckets
| map({key: .key, value: .search.value})
来自终端:
jq '.aggregations[].buckets
| map({key: .key, value: .search.value})' input.json
答案 1 :(得分:0)
这是一个稍微简单的解决方案
[ .aggregations[].buckets[] | {key, value:.search.value} ]