创建具有指定索引

时间:2016-06-24 07:17:52

标签: jq

我正在尝试使用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

2 个答案:

答案 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} ]