Skip to content

toHero/couch2elastic4sync

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

couch2elastic4sync

Since Elasticsearch rivers are deprecated this is a simple node process that will follow a couchdb changes feed and updates elasticsearch.

You can also include an optional mapper.

npm install couch2elastic4sync -g

Usage

Configuration file

rc is used to set to variables. For example, create a .couch2elastic4sync file with the following

database=http://localhost:5984/idx-edm-v5
elasticsearch=http://elastic-1.com:9200/idx-edm-v5/listing

or pass the config file path explicity

couch2elastic4sync --config=path/to/configfile

Alternatively, the config file can be in JSON

{
  "database": "http://localhost:5984/idx-edm-v5",
  "elasticsearch": "http://elastic-1.com:9200/idx-edm-v5/listing"
}

You can also destructure some of the urls to help configuration management

couch=http://localhost:5984
database=idx-edm-v5
elasticsearch=http://elastic-1.com:9200
indexName=idx-edm-v5
indexType=listing

Load documents

To load all the documents into elasticsearch, run

couch2elastic4sync load

Keep documents in sync

To keep a sync process going, run

couch2elastic4sync

Load just one doc

couch2elastic4sync id 19404098

where it is the id from couch

Format and filter documents

A mapper function can be passed from the config to format documents before being put to ElasticSearch:

database=http://localhost:5984/idx-edm-v5
elasticsearch=http://elastic-1.com:9200/idx-edm-v5/listing
mapper=path/to/my-mapper.js

Where my-mapper.js could be something like

module.exports = function (doc) {
  // apply formatting here
  return doc
}

If the function returns empty, the document is filtered-out

License

MIT

About

Sync couchdb data to elasticsearch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%