
const elasticsearch = require('elasticsearch');
const fs = require('fs');
const readline = require('readline');

const client = new elasticsearch.Client({
    hosts: [ 'http://localhost:9200']
});

client.indices.create({
    index: 'skweb'
}, function(error, response, status) {
    if (error) {
        console.log(error);
    } else {
        console.log("created a new index", response);
    }
});

const bulkIndex = function bulkIndex(index, type, data) {
	let bulkBody = [];
	id = 1;
const errorCount = 0;
	data.forEach(item => {
		bulkBody.push({
			index: {
				_index: index,
				_type:  type,
				_id :   id++,
			}
		});
		bulkBody.push(item);
	});
        console.log(bulkBody);
	client.bulk({body: bulkBody})
		.then(response => {

			response.items.forEach(item => {
				if (item.index && item.index.error) {
					console.log(++errorCount, item.index.error);
				}
			});
			console.log(
				`Successfully indexed ${data.length - errorCount}
				out of ${data.length} items`
			);
		})
		.catch(console.err);
};

async  function indexData() {

   let documents = [];
   const readInterface = readline.createInterface({
      input: fs.createReadStream('/home/elastic/BP/skweb/server/text.txt'),
//    output: process.stdout,
      console: false
   });
   readInterface.on('line', function(line) {  
      const article = JSON.parse(line);
      documents.push(article);

    });
      readInterface.on('close', function() {
        console.log(documents);  
	 bulkIndex('skweb', 'web_page', documents);
      });


  }

  indexData();
