node-esc

node elasticsearch client

node-esc

node-esc is a small client that helps you interact with ElasticSearch.

$ npm install node-esc
 
var ESIndex = require('node-esc');
var esi = new ESIndex('http://localhost:9200/twitter');
esi.addType('tweet');
 
esi.tweet.getById(tweetId, function (errtweet) {
    console.log(tweet);
});

Each type added to ESIndex instance has following methods: ###getByIdRaw(id, callback) - get document by id (http://www.elasticsearch.org/guide/reference/api/get.html) (number or string) and pass raw data retrieved from ElasticSearch.

    esi.tweet.getByIdRaw(1, function (errdoc) {
        console.log(doc);
        /**
        logs whole response from ElasticSearch e.g:
            {
                _id: 1,
                _index: 'twitter',
                _type: 'tweet',
                exists: true,
                _source: {
                    _id:0,
                    user: 'foo',
                    message: 'foo bar baz',
                    date: '2012-11-10T12:10:10'
                }
            }
        */
    });

###getById(id, callback) - get document by id, but return only document content (_source property from result) or null if document does not exist.

    esi.tweet.getById(1, function (errdoc) {
        console.log(doc);
        /**
        logs only _source value e.g:
            {
                _id:0,
                user: 'foo',
                message: 'foo bar baz',
                date: '2012-11-10T12:10:10'
            }
        */
    });

###mGetByIdRaw(ids, callback) - get multiple documents by array of ids () and return whole ElasticSearch response

    esi.tweet.mGetByIdRaw([1, 2], function (errdocs) {
        console.log(docs);
        /**
        logs whole response from ElasticSearch e.g:
            {
                docs: [
                    {
                        _id: 1,
                        _index: 'twitter',
                        _type: 'tweet',
                        exists: true,
                        _source: {
                            _id:0,
                            user: 'foo',
                            message: 'foo bar baz',
                            date: '2012-11-10T12:10:10'
                        }
                    },
                    {
                        _id: 2,
                        _index: 'twitter',
                        _type: 'tweet',
                        exists: false,
                    }
                ]
            }
        */
    });

###mGetByIdRaw(ids, callback) - get multiple documents by array of ids () and return only content of existing documents (as array)

    esi.tweet.mGetByIdRaw([1, 2], function (errdocs) {
        console.log(docs);
        /**
        logs whole response from ElasticSearch e.g:
            [
                {
                    _id:0,
                    user: 'foo',
                    message: 'foo bar baz',
                    date: '2012-11-10T12:10:10'
                }
            ]
        */
    });

###searchRaw(searchConfig, callback) - execute search in type, with searchConfig passed as request body (http://www.elasticsearch.org/guide/reference/api/search/request-body.html) and return raw ElasticSearch reponse

    esi.tweet.searchRaw({query: {term: {message: 'foo'}}}, function (errresults) {
        console.log(results);
        /**
        logs whole response from ElasticSearch e.g:
            {
                _shards: {
                    total: 5,
                    successful: 5,
                    failed: 0
                },
                hits {
                    total: 1,
                    hits: [
                        {
                            _id: 1,
                            _index: 'twitter',
                            _type: 'tweet',
                            exists: true,
                            _source: {
                                _id:0,
                                user: 'foo',
                                message: 'foo bar baz',
                                date: '2012-11-10T12:10:10'
                            }
                        }
                    ]
                }
            }
        */
    });

###search(searchConfig, callback) - execute search in type with search config passed as request body and return only content objects of hits array

    esi.tweet.search({query: {term: {message: 'foo'}}}, function (errresults) {
        console.log(results);
        /**
        logs whole response from ElasticSearch e.g:
            [
                {
                    _id:0,
                    user: 'foo',
                    message: 'foo bar baz',
                    date: '2012-11-10T12:10:10'
                }
            ]
        */
    });