728x90
require 한 것들 elasticsearch, readline, fs
var elasticsearch = require('elasticsearch');
var rl = require('readline');
var fs = require('fs');
var conf = require('./conf');
var client = new elasticsearch.Client({
hosts: ["https://" + conf.els_id + ":" + conf.els_pw + "@" + conf.els_ip + ":" + conf.els_port]
});
var r = rl.createInterface({
input: process.stdin,
output: process.stdout
});
r.question("Input File Name : ", function (answer) {
var input = answer.split(" ");
var data = fs.readFileSync("./bulk_data/" + input, 'utf8') //bulk할 데이터가 들어있는 파일명
var bulkarr = [];
bulkarr.push(data);
await addDocumnet(bulkarr);
r.close();
});
async function addDocument (d) {
try {
const rs = await client.bulk({
body:d
})
console.log(rs);
} catch (err) {
console.error('addDocument Error : ', err);
}
};
파일 구조
project
- bulk_data
-- data1
- conf.js
- add_bulk.js
방식
node add_bulk.js 입력시
Input File Name : <-이게 출력
bulk_data 디렉터리 안에 벌크 할 데이터가 들어있는 파일명을 입력
해당 파일 안에 있는 데이터를 bulkarr에 푸쉬 후 벌크를 시키는 함수한테 전달해서 처리함
단, 주의할 점은 bulk할 데이터가 지나치게 너무 많을 경우 이 소스로는 제대로 처리 못하는 상황이 발생할 수 있음
너무 많으면 일정량씩 끊어서 처리하게끔 소스를 짜야함
https://github.com/smw0807/minu_1/tree/master/node/add_data
반응형
'Node.js' 카테고리의 다른 글
[Node] 이미지파일 base64로 encode, decode 하기 (0) | 2021.01.08 |
---|---|
[Node] express 레이아웃 express-ejs-layouts 사용하기 (0) | 2020.10.08 |
[Node] express static (정적폴더 사용하기) (0) | 2020.04.12 |
[Node] node로 Elasticsearch index에 필드 추가 (1) | 2019.11.20 |
[Node] node를 이용한 ElasticSearch에 데이터 넣기 (0) | 2019.06.05 |