Как сплести строки двух разных операторов jq вместе - PullRequest
0 голосов
/ 16 мая 2019

У меня есть следующее утверждение jq:

cat main.json | jq .hits.hits[] | jq -c '{"index":{"_index": ._index, "_type": ._type, "_id": ._id}}'

, что дает мне что-то вроде:

{"index":{"_index":"main","_type":"default","_id":"64"}}
{"index":{"_index":"main","_type":"default","_id":"65"}}

И еще одно утверждение jq:

cat main.json | jq .hits.hits[] | jq -c '._source'

, что дает мне что-то вроде:

{"mainContentOfPage":"hidden","informationType":"Product","url":"hidden","_id":"64"}
{"mainContentOfPage":"hidden","informationType":"Product","url":"hidden","_id":"65"}

Теперь я хочу объединить эти операторы, чтобы получить их результаты в последовательных строках, например:

{"index":{"_index":"main","_type":"default","_id":"64"}}
{"mainContentOfPage":"hidden","informationType":"Product","url":"hidden","_id":"64"}  
{"index":{"_index":"main","_type":"default","_id":"65"}}
{"mainContentOfPage":"hidden","informationType":"Product","url":"hidden","_id":"65"}

, что позволит мне проиндексировать их, используя Bulk API Elasticsearch .

Как можно объединить два утверждения, чтобы получить желаемый результат?

1 Ответ

1 голос
/ 16 мая 2019

Используйте запятую (также я упростила селекторы ключ-значение для использования сокращенного синтаксиса):

jq -c '.hits.hits[] | { index: { _index, _type, _id } }<b>,</b> ._source' main.json
...