gpt4 book ai didi

json - 使用 jq 展平嵌套的 JSON

转载 作者:行者123 更新时间:2023-11-29 02:48:49 25 4
gpt4 key购买 nike

我想展平一个嵌套的 json 对象,例如{"a":{"b":1}}{"a.b":1} 以便在 solr 中消化它。

我有 11 TB 的 json 文件,它们都是嵌套的并且在字段名称中包含点,这意味着 elasticsearch(点)和 solr(没有 _childDocument_ 符号的嵌套)都不能按原样消化它。

其他解决方案是用下划线替换字段名称中的点并将其推送到 elasticsearch,但我对 solr 的体验要好得多,因此我更喜欢扁平化解决方案(除非 solr 可以按原样消化那些嵌套的 json??) .

只有当消化过程比 solr 花费的时间少得多时,我才会更喜欢 elasticsearch,因为我的首要任务是尽可能快地消化(因此我选择了 jq 而不是用 python 编写脚本)。

请帮忙。

编辑:

我认为这对示例 3 和 4 为我解决了这个问题: https://lucidworks.com/blog/2014/08/12/indexing-custom-json-data/

我会尽快尝试。

最佳答案

您还可以使用以下 jq 命令以这种方式展平嵌套的 JSON 对象:

[leaf_paths as $path | {"key": $path | join("."), "value": getpath($path)}] | from_entries

它的工作方式是:leaf_paths返回数组流,表示给定 JSON 文档中出现“叶元素”的路径,即没有子元素的元素,例如数字、字符串和 bool 值。我们将该流通过管道传输到对象中 keyvalue属性,其中 key包含路径数组的元素作为由点和 value 连接的字符串包含该路径上的元素。最后,我们将整个东西放在一个数组中并运行 from_entries在它上面,它转换了一个 {key, value} 的数组对象转换为包含这些键值对的对象。

关于json - 使用 jq 展平嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37540717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com