将数据从Node.jsstream上传到ElasticSearch数据库

我目前的Node.js代码从一个非常大的USPTO专利XML文件(大约100mb)创build一个stream,并在parsingXMLstream时创build一个patentGrant对象。 专利授权对象包括出版号,出版国,出版date和专利种类。 我正在尝试使用ElasticSearch创build一个包含所有patentGrant对象的数据库。 我已成功添加代码以连接到本地ElasticSearch数据库,但是我无法理解ElasticSearch-js API。 我不知道应该如何将专利授权对象上传到数据库。 从以下教程和之前的一个计算器问题,我在这里问。 好像我应该使用批量API 。
下面是我的ParseXml.js代码:

var CreateParsableXml = require('./CreateParsableXml.js'); var XmlParserStream = require('xml-stream'); // var Upload2ES = require('./Upload2ES.js'); var parseXml; var es = require('elasticsearch'); var client = new es.Client({ host: 'localhost:9200' }); // create xml parser using xml-stream node.js module parseXml = new XmlParserStream(CreateParsableXml.concatXmlStream('ipg140107.xml')); parseXml.on('endElement: us-patent-grant', function(patentGrantElement) { var patentGrant; patentGrant = { pubNo: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['doc-number'], pubCountry: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['country'], kind: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['kind'], pubDate: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['date'] }; console.log(patentGrant); }); parseXml.on('end', function() { console.log('all done'); }); 

批量api,正如它在链接的文档中所述,用于“索引”和“删除”操作。

使用create https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-create

 parseXml.on('endElement: us-patent-grant', function(patentGrantElement) { var patentGrant; patentGrant = { pubNo: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['doc-number'], pubCountry: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['country'], kind: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['kind'], pubDate: patentGrantElement['us-bibliographic-data-grant']['publication-reference']['document-id']['date'] }; client.create({ index: 'myindex', type: 'mytype', body: patentGrant, }, function() {} ) console.log(patentGrant); }); 

没有ID,它应该创build一个ID按照https://www.elastic.co/guide/en/elasticsearch/reference/1.6/docs-index_.html#_automatic_id_generation