【问题标题】:No handler found for uri [/<index>/<type>/] and method [PUT]未找到 uri [/<index>/<​​type>/] 和方法 [PUT] 的处理程序
【发布时间】:2016-01-27 21:21:08
【问题描述】:

我正在尝试使用插入文档 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 添加到该路径的末尾,它将起作用。这里有什么问题?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

    这里您使用的是PUT,所以_id必需的,ES 将创建一个具有该ID 的新文档,或者如果存在该ID 它将更新具有该ID 的文档。您可以阅读more 了解此内容。

    如果您不想指定 id,请尝试使用 POST 请求索引,就像使用 curl 所做的那样

    var options = {
      protocol: 'http:',
      hostname: 'host',
      port: 3333,
      path: '/catalog/products/',
      method: 'POST'                  <--- specify method
    }
    

    希望这会有所帮助!

    【讨论】:

    • 看来我在这方面工作太久了!感谢您的信息!
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多