找不到用于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在该路径的末尾添加一个,它将起作用。怎么了

回答:

这里的问题是方式POSTPUT工作方式,当您使用时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

回到顶部