2017-06-02 71 views
0

我是Elasticsearch的新手,我正在按照教程加載示例數據:https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html 當我嘗試在PowerShell中批量插入數據 'curl -H'Content-Type:application/X-ndjson '-XPOST的 'localhost:9200 /莎士比亞/ _bulk漂亮' --data二進制 「@ shakespeare.json」'問題批量插入elasticsearch捲曲powershell

我收到以下錯誤

PS C:\開發\ elasticsearch-5.4.1 \ importdata> curl -H'Content-Type:application/x-ndjson'-XPOST'localhost:9200/shakespeare/_bulk?pretty'--data-binary「@ shakespeare.json」調用WebRequest:無法綁定參數'標題'。無法將類型爲「System.St ring」的「Content-Type:application/x-ndjson」值轉換爲鍵入「System.Collections.IDictionary」。 在行:1字符:9 +捲曲-H '內容 - 類型:應用程序/ x-ndjson' -XPOST的「localhost:9200 /秒... + ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~類別信息:InvalidArgument:(:) [Invoke-WebRequest],ParameterBindingException .InvokeWebRequestCommand

我已經試過幾件事情,閱讀大量API文檔,但沒有結果

我這裏還有JSON文件的內容的一些例子:

{ 「索引」:{ 「_索引」: 「莎士比亞」, 「_類型」: 「行動」, 「_ ID」:0}} { 「line_id」:1, 「play_name」: 「亨利IV」,「speech_number 「:」」, 「LINE_NUMBER行」: 「」, 「喇叭」: 「」, 「text_entry」: 「ACT I」} { 「指數」:{ 「_指數」: 「莎士比亞」, 「_類型」: 「場景」 , 「_編碼」:1}} { 「line_id」:2 「play_name」: 「亨利IV」, 「speech_number」: 「」, 「LINE_NUMBER」: 「」, 「揚聲器」: 「」, 「text_entry」: 「場景一倫敦。宮殿 「} {」 索引 「:{」 _索引 「:」 莎士比亞 「 」_類型「: 」行「, 」_ ID「:2}} { 」line_id「:3 」play_name「:」 亨利四世」, 「speech_number」: 「」, 「LINE_NUMBER行」: 「」, 「喇叭」: 「」, 「text_entry」: 「進入國王亨利,約翰勳爵蘭開斯特,威斯特摩蘭伯爵,SIR WALTER生硬,和其他人」}

+0

的JSON的結構在使用批量注入時數據是不同的,你基本上需要添加index/type/id作爲json的一部分:這裏有更多信息https://www.elastic.co/guide/en/elasticsearch/reference/5.4/ docs-bulk.html –

+0

你也可以在powershell/Invoke-WebRequest中使用unix/curl litterally,你應該使用Invoke-RestMethod來替代imo。 –

+0

最後URI應該是'localhost:9200/_bulk' ..這些評論不會解決所有問題,因爲我沒有看到sharespeare.json文件,但它應該讓你更接近。 –

回答

0

我找到了解決辦法。因爲我以前在Windows和使用PowerShell捲曲,我不得不當我使用演示,

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json 

轉化爲

PS C:\Development\elasticsearch-5.4.1\importdata> $postParams = @" 
>> {"index":{"_index":"shakespeare","_type":"act","_id":0}} 
>> {"line_id":1,"play_name":"Henry IV","speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"} 
>> 
>> "@ 

PS C:\Development\elasticsearch-5.4.1\importdata> curl -H @{"Content-Type" = "application/x-ndjson"} -Method POST 'http://localhost:92 
00/shakespeare/_bulk?pretty' -body $postParams 

文件,批量插入並沒有成功,但是那是另外一個問題

PS C:\開發\ elasticsearch-5.4.1 \ IMPORTDATA> $ postParams =獲取內容 「shakespeare.json」