UNPKG

elasticmongooseq

Version:

Mongoose elasticsearch bindings

102 lines (82 loc) 3.14 kB
Q = require("q") ElasticMongooseQModel = require('./model') ### ElasticMongoose is a wrapper around the elasticsearch object using Q and the default elaticsearch options. Options: http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-conventions.html A log method can also be specified for logging errors ### class ElasticMongooseQ ### new ElasticMongooseQ - setup an elasticMongooseQ instance @param {Object} options hash @option {String} index - default elasticsearch index to use @option {Object} client - configured elasticsearch client to use @options {Object} logger - log function (defaults to console.debug) ### constructor: (options) -> @elasticClient = options.client @elasticIndex = options.index @elasticTypes = [] @logger = options.logger || console connect: (callback) -> self = this createIfMissing = (boolean) -> if boolean then Q(true) else self.createIndex() @indexExists().then(createIfMissing).nodeify(callback) # # Index Management # ### exists http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-indices-create @param {Function} callback - callback with node signature @returns {Promise} ### indexExists: (callback) -> @elasticClient.indices.exists(index: @elasticIndex).nodeify(callback) ### createIndex http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-indices-create @param {Function} callback - callback with node signature @returns {Promise} ### createIndex: (callback) -> @elasticClient.indices.create(index: @elasticIndex).nodeify(callback) ### refreshIndex http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-indices-delete @param {Function} callback - callback with node signature @returns {Promise} ### refreshIndex: (callback) -> @elasticClient.indices.refresh(index: @elasticIndex).nodeify(callback) ### deleteindex http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-indices-delete @param {Function} callback - callback with node signature @returns {Promise} ### deleteIndex: (callback) -> @elasticClient.indices.delete(index: @elasticIndex).nodeify(callback) ### clearIndex - removes the configured elasticsearch index http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-deletebyquery @param {Function} callback - callback with node signature @returns {Promise} ### clearIndex: (callback) -> opts = index: @elasticIndex type: @elasticTypes q: '*' @elasticClient.deleteByQuery(opts).nodeify(callback) # # Mongoose plugin # ### Plugin - returns a function suitable for creating a mongoose plugin ### plugin: -> elasticMongooseQModel = new ElasticMongooseQModel(this) elasticMongooseQModel.plugin module.exports = ElasticMongooseQ