找不到uri [/ <index>/<type> /]和方法[PUT]的处理程序

Bre*_*dly 21 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, ...);
Run Code Online (Sandbox Code Playgroud)

它返回此错误:

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

但是,如果我id在该路径的末尾添加一个它将起作用.这有什么不对?

Chi*_*h25 40

这里的问题是当你使用时,方式POSTPUT工作是可选的,ES 每次都会为你生成一个独特的.POST_id_id

在这里,您使用的是PUT这样_id要求,ES将可以创建与ID一个新的文档,或者如果它存在,它将具有该ID更新文档.您可以阅读更多相关信息.

如果您不想指定id,请尝试使用POST请求进行索引curl

var options = {
  protocol: 'http:',
  hostname: 'host',
  port: 3333,
  path: '/catalog/products/',
  method: 'POST'                  <--- specify method
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!