amqp2solr v0.0.8
amqp2solr
amqp2solr is a library both for querying a SOLR core and queueing (add) queries for delayed execution. It is a wrapper, which aims to make delayed/remote execution of solr queries more seamless.
Basic usage
var dependencies = { config, logger, amqp };
var amqp2solr = require('amqp2solr')(dependencies);The dependencies parameter can be used for overriding config and/or logger.
loggershould haveinfo,erroranddebugmethods. It defaults to console.log.configassumed to have agetmethod. (nconf is used)
getResource(options) and query locally
var resourceParams = { core: 'blogs' };
var blogResource = amqp2solr.getResource(resourceParams);
// ... and then ...
blogResource.add({id: 'example', someField: 1}, cb);
blogResource.createOrUpdate({id: 'example'}, {someOtherField: 1}, cb);getQueue([queueName,] blogResource) and queue queries
// Create a resource ...
var blogResource = amqp2solr.getResource(resourceParams);
// ... and map it to the resource ...
var blogQueue = amqp2solr.getQueue(blogResource);
// ... optionally with explicitly given AMQP queue name ...
var blogQueue = amqp2solr.getQueue(queueName, blogResource);You can give resourceParams instead of an actual resource (can be useful in environments where you don't want to use the resource locally.
var blogQueue = amqp2solr.getQueue(queueName, resourceParams);You can get the resource var blogResource = blogQueue.resource;.
solrQueue.listen() to consume a queue
amqp2solr.getQueue(queueName, resourceParams).listen(); getResource(options)
Returns a solrResource instance.
The options parameter accepts the following fields:
core: the name of the core to connect to, defaults to''fields: an object consisting of key-value pairs to transform field names.- it's keys are keys of your existing model
- it's values are field names in SOLR
- Typically, this can be used to adapt to the default solr schema.xml, eg:
{email: 'email_s'}
transformationsis an optional object which can be used for transforming the data before/after solr.- it's keys are keys of your existing model
- it's values are objects with 2 fields:
formSolr: function(value) {return value; }toSolr: function(value) {return value; }
mltis an optional more like this setting to be used as default in therecommendmethod.
It returns a solrResource object;
solrResource
add(doc [,cb]): creates/replaces a documentfind(q [,cb]): find documents both by query or idfindAndModify(q, updateParams [, opts ,cb]): update some fields of existing documents matched byfind(q)createOrUpdate(q, updateParams, [, cb]): similar tofindAndModify, but this creates a new document if none found.moreLikeThis(q, [mlt], cb): find similar documents to any document which matchesdelete(id, cb)deletes by a query, mapped fromnode-solr-clientdeleteById(id, cb)deletes by idencodeformats the document to solr (transposes field names and performs transformations)deocdeformats the document came back from solr (reverses field names and performs reverse transformations)solrexposes the wrappednode-solr-client
getQueue([queueName,] solrResourceOrOptions)
Returns a solrQueue instance. If solrResourceOrOptions is not a
solrResource,
it calls getResource with solrResourceOrOptions.
getAsymmetric([queueName,] solrResourceOrOptions)
Returns an asymmetric (queued-write, direct-read), mixed resource which queues inserts/updates/modifies but directly queries selects/moreLikeThis/...
solrQueue
solrQueue has exactly the same methods than a solrResource, but it pushes the task to the queue rather than executing it locally.