2016-01-26 30 views
20

我試圖使用插入文檔api的自動增量id功能向我的elasticsearch索引生成一個原始NodeJS http請求。找不到處理程序的處理程序[/ <index>/<type> /]和方法[PUT]

所以這一點也適用curl

curl -XPOST http://host:3333/catalog/products -d '{ "hello": "world" }'

但是當我通過這種嘗試同樣在的NodeJS:

var http = require('http'); 

var options = { 
    protocol: 'http:', 
    mehtod: 'PUT', 
    hostname: 'host', 
    port: 3333, 
    path: '/catalog/products/' 
} 

http.request(options, ...); 

它返回此錯誤:

No handler found for uri [/catalog/products/] and method [PUT]

Howev呃如果我添加一個id到該路徑的末尾它將工作。這裏有什麼問題?

回答

36

這裏的問題是這樣POSTPUT作品,當你使用POST_id是可選的,ES將生成一個唯一的_id你每次。

這裏使用的是PUT所以_id需要,ES將可以創建與ID一個新的文檔,或者如果它存在,它將具有該ID更新文檔。你可以閱讀more

嘗試索引與POST請求作爲你curl做,如果你不想指定ID

var options = { 
    protocol: 'http:', 
    hostname: 'host', 
    port: 3333, 
    path: '/catalog/products/', 
    method: 'POST'     <--- specify method 
} 

希望這有助於!

+0

看起來我一直在這工作太久了!謝謝(你的)信息! – Breedly

+0

很高興我能幫忙! – ChintanShah25

相關問題