繁体   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