一尘不染

找不到用于uri的处理程序[///]和方法[PUT]

elasticsearch

我正在尝试使用插入文档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在该路径的末尾添加一个,它将起作用。怎么了


阅读 1363

收藏
2020-06-22

共1个答案

一尘不染

这里的问题是方式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
}

希望这可以帮助!

2020-06-22