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

时间:2017-08-28 20:22:41

标签: json windows bash elasticsearch elasticsearch-bulk

我有一个格式为

的ndjson文件
{"field1": "data1" , "field2": "data2"}
{"field1": "data1" , "field2": "data2"}
....

我想添加一个像

这样的标题
{"index": {}}
在使用批量操作之前,在每个文档之前

   我发现了一个类似的问题:Elasticsearch Bulk JSON Data

解决方案是这个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 或者有更好的解决方案吗? 感谢

1 个答案:

答案 0 :(得分:1)

示例中的while是一个通常内置于开发人员友好的shell中的结构,例如sh,bash或zsh但是windows不提供开箱即用的功能。 See the bash docs for example

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

另一方面,如果您被限制在Windows但希望某种更好的shell可以更频繁地使用它,那么您应该看看cmder project为您带来bash环境到Windows桌面时使用与git-for-windows一起打包的完整版本。这应该允许您甚至在非Linux或Mac环境中使用此类脚本功能。