«jq: ошибка: не удается проиндексировать массив с помощью строки» получение данных из результатов ElasticSearch с помощью jq

#bash #jq

#bash #jq

Вопрос:

Я пытаюсь получить listaObjeto из json.

Это выдержка из моего json:

 {
  "took": 42,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 11.2367325,
    "hits": [
      {
        "_index": "provflogs-2019.03.26",
        "_type": "Portal",
        "_id": "SQGEumkBYgyBeVm_SiGe",
        "_score": 11.2367325,
        "_source": {
          "siglaSistema": "SRPO",
          "dataPesquisa": "2019-03-26T12:00:25.896-0300",
          "ipRequisitante": "104.238.179.249",
          "listaObjeto": [
            "UB711395572YP",
            "OG461051611BR",
            "RG968790315CN"
          ],
          "loginUsuario": "USER1",
          "metodoRequisitado": "buscaEventos"
        }
      }
    ]
  }
}
  

Вот ошибка, которую я получаю :

jq ‘.hits.попадания._source.listaObjeto’ jq: ошибка: не удается проиндексировать массив с помощью строки

Ответ №1:

.hits.hits это массив, поэтому вам нужно будет добавить [] для отображения поверх него:

 .hits.hits[]._source.listaObjeto