elasticsearch: create index with mappings using javascript elasticsearch: create index with mappings using javascript elasticsearch elasticsearch

elasticsearch: create index with mappings using javascript


Refining the answer that is in the comment above from Sander Spilleman. The "mappings" property needs to be inside the "body" property. I am also using the Javascript client 1.3.0 and the docs are still not updated with an example.

Adding an example that worked for me with the javascript API provided by elasticsearch on NPM 1.3.0

var body = {    tweet:{        properties:{            tag         : {"type" : "string", "index" : "not_analyzed"},            type        : {"type" : "string", "index" : "not_analyzed"},            namespace   : {"type" : "string", "index" : "not_analyzed"},            tid         : {"type" : "string", "index" : "not_analyzed"}        }    }}client.indices.putMapping({index:"tweets", type:"tweet", body:body});


I tried same but got error from the name of index. aName is not valid, error was about the using lowercase index name. Then It created with mappings.

it.only('putMapping', function (done) {    client.indices.create({        index: "aname",        body: {            "mappings": {                "aType": {                    "properties": {                        "aProp1": {"type": "string", "index": "not_analyzed"},                        "aProp2": {"type": "string", "index": "not_analyzed"},                        "aProp3": {"type": "string", "index": "not_analyzed"},                        "aProp4": {"type": "string", "index": "not_analyzed"}                    }                }            }        }    }, function (err, resp, respcode) {        console.log(err, resp, respcode);    });})

Output:

Elasticsearch DEBUG: 2015-08-08T15:23:09Z  starting request { method: 'POST',    path: '/aname',    body: { mappings: { aType: [Object] } },    query: {} }Elasticsearch TRACE: 2015-08-08T15:23:10Z  -> POST http://localhost:9200/aname  {    "mappings": {      "aType": {        "properties": {          "aProp1": {            "type": "string",            "index": "not_analyzed"          },          "aProp2": {            "type": "string",            "index": "not_analyzed"          },          "aProp3": {            "type": "string",            "index": "not_analyzed"          },          "aProp4": {            "type": "string",            "index": "not_analyzed"          }        }      }    }  }  <- 200  {    "acknowledged": true  }

enter image description here


Just add body around mappings:

client.indices.create({    index: "aName",    body: {        "mappings": {            "aType": {                "properties": {                    "aProp1": { "type": "string", "index": "not_analyzed" },                    "aProp2": { "type": "string", "index": "not_analyzed" },                    "aProp3": { "type": "string", "index": "not_analyzed" },                    "aProp4": { "type": "string", "index": "not_analyzed" }                }            }        }    }}, function (err, resp, respcode) {    console.log(err, resp, respcode);});