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

时间:2016-01-26 22:37:13

标签: 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,它将起作用。这有什么不对?

1 个答案:

答案 0 :(得分:40)

此处的问题是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
}

希望这有帮助!