在上传到弹性搜索之前插入每个文档的标题



我有一个ndjson文件,格式如下

{"field1": "data1" , "field2": "data2"}
{"field1": "data1" , "field2": "data2"}
....

我想添加一个类似的标题

{"index": {}}

在使用批量操作之前的每个文档之前我发现了一个类似的问题:Elasticsearch批量JSON数据

解决方案是这个jq命令:

jq -cr ".[]" input.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json

但我得到了这个错误:

'while' is not recognized as a internal or external command

我做错了什么?我正在运行Windows或者有更好的解决方案吗?感谢

您的示例中的while是一个通常内置于开发人员友好的shell(如sh、bash或zsh(中的构造,但windows不提供开箱即用的功能。例如,请参阅bash文档。

因此,如果这是一次性的,那么最快的解决方案可能是使用一些文本编辑器,并通过使用一些多光标功能添加所需的操作行。

另一方面,如果您仅限于Windows,但希望某种更好的shell更频繁地使用它,那么在使用git for Windows打包的完整版本时,您应该看看cmder项目,该项目会为您的Windows桌面带来bash环境。这应该允许您在非linux或mac环境中使用此类脚本功能。

最新更新