【问题标题】:how to split jq output at every json object如何在每个 json 对象上拆分 jq 输出
【发布时间】:2016-12-06 10:23:02
【问题描述】:
{
  "title": "...",
  "description": "...",
  "languageKey": "ja"
}    {
  "title": "...",
  "description": "...",
  "languageKey": "ja"
}    {
  "title": "...",
  "description": "...",
  "languageKey": "ja"
}

这个输出被提供给一个 curl 请求

参考:https://www.elastic.co/blog/loading-wikipedia

curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.hits.hits[] | ._source' \
| jq '{title: .heading[0], description: .text, languageKey: "ja"} \
| curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d @-

但在 java 端点下只被点击一次,并且地图data 只有一个标题、描述和语言键。为什么其他 json 项丢失了?

@RequestMapping(path = "/api/add", method = RequestMethod.PUT)
public void add(@RequestBody Map<String, String> data)
{ 
...

那是因为 jq 输出没有在每个 json 对象上拆分吗?如果是的话,我该如何用 jq 做到这一点?

【问题讨论】:

  • 所以让我把这个弄清楚,你正在向 ElasticSearch 请求一些东西,然后试图将其输出提供给另一个 curl 与 java 实现的服务器对话,对吗?
  • 是的,我正在尝试使用休眠搜索 + lucene 实现弹性搜索类型功能。我想获取 wikiquote 数据来测试我的自定义分析器。
  • 按照我的看法,当您尝试将其发送到终点时,数据不再是数组,不能说 100%,但@zeeshan 的答案可能有效,如果不是,您可能需要考虑在输出上做一些循环

标签: java spring bash curl jq


【解决方案1】:

这是一种替代方法,它循环遍历结果并分别发送:

请注意-c 打印每个输出而不缩进。

curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.hits.hits[] | ._source' \
| jq -c '{title: .heading[0], description: .text, languageKey: "ja"} \
| while read next; do curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d $next; done

【讨论】:

    【解决方案2】:

    我认为你需要这样尝试:

    curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
    | jq '.[] | {title: .title, description: .description, languageKey: "ja"} \
    | curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d @-
    

    您在返回的 json 列表中缺少 '.[]' 数组操作运算符

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2020-03-02
      相关资源
      最近更新 更多