在 Docker 容器中从 bash 脚本运行 curl 命令时出现压缩机检测问题

在 Docker 容器中从 bash 脚本运行 curl 命令时出现压缩机检测问题

我想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

相关内容