簡體   English   中英

嘗試使用JQ處理json數據:Elasticsearch批量索引api

[英]Attempting to use JQ to process json data : Elasticsearch bulk index api

這個問題來自以下帖子:

Elasticsearch 散裝 JSON 數據

jq -c -r ".[]" C:\setting-es.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json

上面的 jq shell 命令拋出錯誤“Missing statement body in do loop”

我試圖改變語法,但它仍然不起作用。 我正在嘗試編寫 shell 腳本來為 elasticsearch 的批量 api 轉換以下數據:

[{
    "codeId": "111",
    "association": [{
        "associationId": 123,
        "businessUnitsAssociationId": 1,
        "financialBusinessUnits": "DCS",
        "businessApprovalLimit": [{
            "businessApprovalLimitApprovalLimitId": 1,
            "itemMinAmount": "0.00",
            "itemMaxAmount": "0.00"
        }, {
            "businessApprovalLimitApprovalLimitId": 2,
            "itemMinAmount": "0.00",
            "itemMaxAmount": "0.00"
        }, {
            "businessApprovalLimitApprovalLimitId": 3,
            "itemMinAmount": "0.00",
            "itemMaxAmount": "0.00"
        }]
    }]
}]

我正在嘗試將其轉換為以下內容:

{"index":{}}
[{"codeId":"111","association":[{"associationId":123,"businessUnitsAssociationId":1,"financialBusinessUnits":"DCS","businessApprovalLimit":[{"businessApprovalLimitApprovalLimitId":1,"itemMinAmount":"0.00","itemMaxAmount":"0.00",},{"businessApprovalLimitApprovalLimitId":2,"itemMinAmount":"0.00","itemMaxAmount":"0.00",},{"businessApprovalLimitApprovalLimitId":3,"itemMinAmount":"0.00","itemMaxAmount":"0.00",}]}]


這是修改后問題的答案,在更正無效的 JSON 之后(即,在刪除兩個多余的逗號之后)。

仍然不需要 shell 循環。

在 bash 或類似 bash 的提示下:

jq -c '.[] | ({"index":{}}, [.])'  input.json

在 Powershell 提示符下,將 jq 程序放入文件中並使用-f FILENAME選項調用 jq 可能更容易。

[此回復基於原始問題。]

不需要任何 shell 循環:

$ jq -c '{"index":{}},.' input.json
{"index":{}}
{"str field":"some string","int field":12345,"bool field":true}
{"index":{}}
{"str field":"another string","int field":42,"bool field":false}
{"index":{}}
{"str field":"random string","int field":3856452,"bool field":true}
{"index":{}}
{"str field":"string value","int field":11111,"bool field":false}
{"index":{}}
{"str field":"last string","int field":54321,"bool field":true}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM