2.0.4 • Published 10 years ago

firesync v2.0.4

Weekly downloads
3
License
ISC
Repository
github
Last release
10 years ago

firesync

Sync Firebase with elasticsearch

var elasticsearch = require('elasticsearch'),
    through = require('through2'),
    Firebase = require('firebase'),
    sync = require('./index');

/*!
 * globals
 */

var FirebaseChildStream = sync.FirebaseChildStream,
    ElasticBulkStream = sync.ElasticBulkStream,
    LogStream = sync.LogStream,
    ref, client, fbEventStream, esBulkStream;

// create firebase and elasticsearch clients
ref = new Firebase('https://jogabo-test.firebaseio.com/jobs');
client = new elasticsearch.Client({
  host: 'localhost:9200',
  log: 'info'
});

// create data streams
fbEventStream = new FirebaseChildStream(ref);
esBulkStream = new ElasticBulkStream(client, {
  index: 'firequeue'
});

// start indexing
fbEventStream
  .pipe(through.obj(function(chunk, enc, callback) {
    var op = chunk.op,
        child = chunk.child;
    switch(op) {
      case 'index':
        return callback(null, [
          { index: { _id: child.key(), _type: 'firequeue' } },
          { doc: child.val() }
        ]);
      case 'update':
        return callback(null, [
          { update: { _id: child.key(), _type: 'firequeue' } },
          { doc: child.val(), doc_as_upsert: true }]);
      case 'remove':
        return callback(null, [
          { delete: { _id: child.key(), _type: 'firequeue'  } }
        ]);
      default:
        callback(new Error('invalid operation ' + op));
    }
  }))
  .pipe(esBulkStream)
  .pipe(new LogStream());
2.0.4

10 years ago

2.0.3

10 years ago

2.0.1

10 years ago

2.0.0

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

11 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago