![在 Docker 容器中从 bash 脚本运行 curl 命令时出现压缩机检测问题](https://linux22.com/image/1500115/%E5%9C%A8%20Docker%20%E5%AE%B9%E5%99%A8%E4%B8%AD%E4%BB%8E%20bash%20%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%20curl%20%E5%91%BD%E4%BB%A4%E6%97%B6%E5%87%BA%E7%8E%B0%E5%8E%8B%E7%BC%A9%E6%9C%BA%E6%A3%80%E6%B5%8B%E9%97%AE%E9%A2%98.png)
我想curl
在 Docker 容器内使用 bash 脚本执行。
script.sh
这是我添加到容器中的脚本文件:
curl -X POST http://localhost:9200/tests/test -d usr/share/elasticsearch/data/test.json
json文件的内容如下(添加的想法\
来自此主题):
"{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"
当我进入正在运行的 Docker 容器并执行时bash myscript.sh
,结果是:
{“error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“无法解析”}],“type”:“mapper_parsing_exception”,“reason”:“无法解析”,“caused_by”:{“type”:“not_x_content_exception”,“reason”:“只能对某些 xcontent 字节或压缩的 xcontent 字节调用压缩器检测”}}
但是,如果我将脚本更改为以下内容:
curl -X POST http://localhost:9200/tests/test -d "{\"id\":\"978-1-60741-503-9\",\"doi\":\"\"}"
然后它就可以正常工作了。
那么,为什么它不喜欢 json 文件呢???
更新:
当我按照评论中的建议添加时@
,usr/
出现以下错误:
警告:无法从文件警告中读取数据:“usr/share/elasticsearch/data/test.json”,这将导致空警告:POST。%总计%已接收%Xferd平均速度时间时间
时间当前Dload上传总花费剩余速度100 201 100 201 0 0 740 0 --:--:-- --:--:-- --:--:-- 738 {“error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“无法解析,文档为空”}],“type”:“mapper_parsing_exception”,“reason”:“无法解析,文档为空”},“status”:400}
文件test.json
:
"{\"id\":\"123\",\"field\":\"456\"}"
答案1
json
作为参数传递的文件前面应该curl -d
带有@
符号。
curl -X POST http://localhost:9200/tests/test -d @usr/share/elasticsearch/data/test.json