Elasticsearch always returning "mapping type is missing"

Set mapping for the index is possible in Elastic search. I tried this with the latest version of Elastic search 1.7.3 and I was able to set the mapping successfully to the index.

I tried the following,

  • Delete the index (DELETE http://localhost:9200/index)
  • Put the mapping json under the index (PUT http://localhost:9200/index)
  • Get the mapping (GET http://localhost:9200//_mapping)

Turns out this is happening because the mapping needs to be applied to the type:

I tried applying it to the wrong thing:

curl -XPUT 10.160.86.134:9200/products/_mapping -d '{

It needs to be applied to the type like so:

curl -XPUT 10.160.86.134:9200/products/product/_mapping -d '{

It's sad that a simple google search couldn't answer this. Also the previous post I linked to is very misleading and the answer is wrong, which I'll point out there as well.