如何使用jq从指定JSON生成包含score与id的新JSON字符串
正确的jq写法方案
生成单个对象列表(每个命中结果对应一个{score, id}对象)
使用以下命令遍历每个Elasticsearch命中结果,逐个构造目标结构:
jq '.hits.hits[] | {score: ._score, id: ._id}'
生成包含所有结果的数组
如果需要将所有结果统一包裹在一个数组中,用方括号包裹遍历逻辑即可:
jq '[.hits.hits[] | {score: ._score, id: ._id}]'
错误原因说明
你之前的写法不符合jq语法规则——直接在对象或数组字面量中使用._hits.hits[]的展开语法是不被允许的。正确逻辑应该是先遍历每个hit元素,再针对单个元素构造目标对象。
内容的提问来源于stack exchange,提问作者Tiina
相关产品推荐
相关产品推荐

