无法发送大文件使用卷曲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'" }') 

将如下失败,所以我用卷曲选项@

说法太长时间使用

+0

你可以尝试添加周围'URL'双引号作为'卷曲-XPUT的 “http://本地主机:9200/$报告 - 日期/文件/报表管道=附件及漂亮” -d“{“数据“: ” ' “是$ var”'“}'' – Inian

+0

卷曲:在/ usr/bin中/卷曲:不能执行[参数列表太长] – codebeginner

+0

使用'@'选项工作了什么?使用它的任何问题? – Inian

你的语法从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