Simple Node.js script to transfer documents between two elasticsearch servers or between indices of the same elasticsearch server.
Implementation based on consumer-producer problem.
Since Node.js is single-threaded, producer
and consumer
cannot simultaneously access the buffer
. And hence, as long as the asynchronous nature of Node.js is handled properly, there shouldn't be any issues related to concurrency.
- Clone the repo.
- Run
npm install
in the directory. - Add
config.js
usingconfig-sample.js
.
Exercise caution while setting source and target elastic hosts (and while editing this file in general). - (Optional) Set appropriate values in
options.js
- Run the script
node index.js
If options.consume.byFile
is set to true
, the documents will be written to a file in a format as expected by the bulk API of elasticsearch. The path of file must be specified in config.js
.
If options.consume.byElastic
is set to true
, the documents will be directly added to the target elastic server. The connection details should be present in config.js
.