2016-11-21 23 views
2

elasticsearch 5.0.1とそれに対応するインジェストアタッチメントがインストールされました。索引付けのためのシェルスクリプトからのエラスティック検索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" } } ]... 

以下のようにシェルスクリプトからインデックス作成のPDF文書を試してみました誰もが、私は、無効なbase64で文字を渡していますかどうかわからない...上記の問題を解決する上で助けてくださいことはできますか?

私がこのように渡すと、それは動作することに注意してください!

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

答えて

0

私は問題は、単一引用符内の変数を展開していないシェルに持っていると思います、あなたはそれを拡大するには引用符を倍にする必要があります。即ち

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

に変化-d' { "data" : $var }'

直接base64ストリームを渡します。

(又は)kshhereに引用し、変数に関する

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

詳細。

+0

ありがとうございます..働いています... –

関連する問題