从shell脚本中调用弹性search索引pdf文档

我安装了elasticsearch 5.0.1和相应的摄取附件。 尝试从shell脚本索引PDF文件如下

#!/bin/ksh var=$(base64 file_name.pdf) var1=$(curl -XPUT 'http://localhost:9200/my_index4/my_type/my_id?pipeline=attachment&pretty' -d' { "data" : $var }') echo $var1 

 I got error as { "error" : { "root_cause" : [ { "type" : "exception", "reason" : "java.lang.IllegalArgumentException: ElasticsearchParseException[Error parsing document in field [data]]; nested: IllegalArgumentException[Illegal base64 character 24];", "header" : { "processor_type" : "attachment" } } ]... 

任何人都可以请帮助解决上述问题…不知道我是否传递无效的base64字符?

请注意,当我这样通过,它的工作!

 var1=$(curl -XPUT 'http://localhost:9200/my_index4/my_type/my_id?pipeline=attachment&pretty' -d' { "data" : "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0=" }') 

我猜这个问题不得不在单引号内扩展变量,你需要双引号扩展它。 即

更改-d' { "data" : $var }'

 -d '{"data" : "'"$(base64 file_name.pdf)"'"}' 

直接传递base64流。

(要么)

 -d '{"data" : "'"$var"'"}' 

更多关于ksh引用和变量