如何使用Nodejs将父/子文档索引到Elasticsearch中?

时间:2012-12-27 08:56:19

标签: node.js elasticsearch

我可以使用此curl命令轻松编制索引:

curl -XPUT 'http://localhost:9200/prototype_2012.12.27/chow-clfg/Cg-IKkxdTstKAAAAlw-?parent=chow-demo' -d '{
  "chow-clfg": {
    "@type": "chow-clfg",
    "clfg": "Cg6h4VCcMexXAAAAsQc",
    "@timestamp": "2012-12-27T08:24:00.000Z",
    "count": 1
  }
}'

结果:

{
  "ok": true,
  "_index": "prototype_2012.12.27",
  "_type": "chow-clfg",
  "_id": "Cg-IKkxdTstKAAAAlw-",
  "_version": 1
}

这几乎立即给我一个结果。

然而,当我尝试使用nodejs的http.request方法时:

var http = require('http');
var index = "prototype_2012.12.27";
var server = "chow-clfg";

var options = {
 host: 'localhost',
 port: '9200',
 path: index+'/'+server+'/Cg-IKkxdTstKAAAAlw-?parent=chow-demo',
 method: 'PUT'
};

var req = http.request(options, function(res){
    console.log('STATUS: ' + res.statusCode);
    console.log('HEADERS: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');

    res.on('data', function (chunk) {
     console.log(chunk);
    });
});

req.on('error', function(e) {
 console.log('problem with request: ' + e.message);
});

req.write('{"chow-clfg":{"@type":"chow-clfg","clfg":"Cg6h4VCcMexXAAAAsQc","@timestamp":"2012-12-27T08:24:00.000Z","count":1}}');
req.end;

这只是暂停中途的过程,并没有给我一个关于它是否成功的反馈。此外,当我在索引中搜索文档时,我找不到它。

因此,我是否有编码错误?或者有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

为什么不使用elasticsearch模块及index方法和parent参数?