Elasticsearch:如何在将json数据上传到Elasticsearch之前创建映射

时间:2015-09-08 07:27:28

标签: json node.js elasticsearch sails.js

我尝试在将json数据上传到elasticsearch之前创建映射。 在sails.js

中上传json数据之前,我不知道如何实现映射

这是我的bulkupload代码段

     var body = [];
      //row is json data
        rows.forEach(function(row, id) {
             body.push({ index:  { _index: 'testindex', _type: 'testtype', _id: (id+1) } });
             body.push(row);
        })  
    client.bulk({
                    body: body
                }, function (err, resp) {
                        if (err) 
                        {
                            console.log(err);
                            return;
                       }
                      else 
                      { 
                            console.log("All Is Well");
                      }
      });

我想在数据上传之前创建映射。任何人都知道如何在帆中创建映射。

我的Json对象

 [ { Name: 'paranthn', Age: '43', Address: 'trichy' },
      { Name: 'Arthick', Age: '23', Address: 'trichy' },
      { Name: 'vel', Age: '24', Address: 'trichy' } ]

2 个答案:

答案 0 :(得分:2)

在进行client.bulk()来电之前,首先需要进行另一次client.indices.putMapping()这样的通话,以便为您要通过bulk电话发送的数据保存正确的映射:

client.indices.putMapping({
   "index": "testindex",
   "type": "testtype",
   "body": {
      "testtype": {
          "properties": {
              "your_int_field": {
                  "type": "integer"
              },
              "your_string_field": {
                  "type": "string"
              },
              "your_double_field": {
                  "type": "double"
              },
              // your other fields
          }
      }
   }
}, function (err, response) {
   // from this point on, if you don't get any error, you may call bulk.
});

请记住,所有这些调用都是异步的,因此请务必仅在bulk成功返回后调用putMapping

答案 1 :(得分:1)

听起来你需要PutMapping