找不到用于uri的处理程序[///]和方法[PUT]
我正在尝试使用插入文档api的自动增量id功能向我的elasticsearch索引发出原始NodeJS http请求。
所以这适用于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]
但是,如果我id
在该路径的末尾添加一个,它将起作用。怎么了
回答:
这里的问题是方式POST
和PUT
工作方式,当您使用时POST
,它_id
是可选的,ES _id
每次都会为您生成一个唯一的。
在这里,您使用的是PUT
这样_id
的
,ES将可以创建与ID一个新的文档,或者如果它存在,它将具有该ID更新文档。您可以阅读有关此内容的更多信息。
如果您不想指定id,请尝试像处理索引那样对POST
请求进行索引curl
var options = { protocol: 'http:',
hostname: 'host',
port: 3333,
path: '/catalog/products/',
method: 'POST' <--- specify method
}
希望这可以帮助!
以上是 找不到用于uri的处理程序[///]和方法[PUT] 的全部内容, 来源链接: utcz.com/qa/432991.html