无法发送大文件使用卷曲elasticsearch:参数过长
问题描述:
这是我用来导出一些文件elasticsearch剧本,但没有运气无法发送大文件使用卷曲elasticsearch:参数过长
#!/bin/ksh
set -v
trap read debug
date=$(date +%Y-%m-%d);
echo $date;
config_file="/home/p.sshanm/reports_elastic.cfg";
echo $config_file;
URL="http://p-acqpes-app01.wirecard.sys:9200/reports-"$date"";
echo $URL;
find /transfers/documents/*/done/ -type f -name "ABC-Record*_${date}*.csv"|
while IFS='' read -r -d '' filename
do
echo "filename : ${filename}"
var=$(base64 "$filename"| perl -pe 's/\n//g');
#if i use below it will fail as argument too long , so i used with curl option @
# var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')
var1=$(curl -X PUT -H "Content-Type: application/json" -d @- "$URL" >>CURLDATA
{ "data": "$var" }
CURL_DATA)
done;
如果我使用它下面的
var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')
将如下失败,所以我用卷曲选项@
说法太长时间使用
答
你的语法从stdin
阅读是错误的,here-doc string应该是(<<
)和去限制器误匹配使用CURL_DATA
在这两个地方。
curl -X PUT -H "Content-Type: application/json" -d @- "$URL" <<CURL_DATA
{ "data": "$var" }
CURL_DATA
+0
它再次失败。 'var1 = $(curl -X PUT -H“Content-Type:application/json”-d @ - “$ URL” codebeginner
+0
@codebeginner:您可以先尝试而不将其放置在变量中吗?请记住,在开始和结束时,限制器CURL_DATA之间不应有任何前导或尾随空格 – Inian
你可以尝试添加周围'URL'双引号作为'卷曲-XPUT的 “http://本地主机:9200/$报告 - 日期/文件/报表管道=附件及漂亮” -d“{“数据“: ” ' “是$ var”'“}'' – Inian
卷曲:在/ usr/bin中/卷曲:不能执行[参数列表太长] – codebeginner
使用'@'选项工作了什么?使用它的任何问题? – Inian