创建具有指定索引的对象
Create an object with specified indexes
我正在尝试使用 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
所以你想产生这个输出?
[
{
"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
这里有一个稍微简单的解决方案
[ .aggregations[].buckets[] | {key, value:.search.value} ]
我正在尝试使用 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
所以你想产生这个输出?
[
{
"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
这里有一个稍微简单的解决方案
[ .aggregations[].buckets[] | {key, value:.search.value} ]