Подтвердить что ты не робот

Не найден обработчик uri [/<index>/<type>/] и метод [PUT]

Я пытаюсь сделать необработанный HTTP-запрос NodeJS для моего индекса elasticsearch, используя функцию api auto increment id вставляемого документа.

Итак, это работает с 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 в конец этого пути, он будет работать. Что здесь не так?

4b9b3361

Ответ 1

Проблема заключается в том, как работает POST и PUT, когда вы используете POST, _id является необязательным, ES будет генерировать уникальный _id для вас каждый раз.

Здесь вы используете PUT, поэтому _id требуется, ES либо создаст новый документ с этим идентификатором, либо обновит документ с этим идентификатором, если он существует. Вы можете прочитать подробнее об этом.

Попробуйте индексировать запрос POST, как вы это делали, с curl, если вы не хотите указывать id

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

Надеюсь, это поможет!