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

I'm trying to make a raw NodeJS http request to my elasticsearch index using the insert document api's auto increment id feature.

So this works with curl:

curl -XPOST -d '{ "hello": "world" }'

But when I try the same in nodejs via this:

var http = require('http');
var options = { protocol: 'http:', mehtod: 'PUT', hostname: 'host', port: 3333, path: '/catalog/products/'
}
http.request(options, ...);

It returns this error:

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

However if I add an id to the end of that path it will work. What's wrong here?

1 Answer

The problem here is the way POST and PUT works, when you use POST, _id is optional, ES will generate a unique _id for you every time.

Here you are using PUT so _id is required, ES will either create a new document with that id or it will update the document with that id if it exists. You can read more about this.

Try indexing with POST request as you did with curl if you dont want to specify id

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

Hope this helps!

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like