backbone-db-elasticsearch

Elasticsearch driver for backbone-db

Example:

var TestModel = Model.extend({
  ...
  type: 'footype',
  searchOptions: {
    index: 'testidx',
  },
  searchValuesfunction() {
    return this.toJSON();
  }
});

Type defines the document's _type field

seachOptions object must define:

  • index: index where document is stored

searchValues function should return Object containing keys & values to be indexed.

var model = new TestModel({
  title: 'testtitle',
  value: 45,
  id: 1
});
model.save();

backbone-db-elasticsearch always expects model to have defined id, thus auto-generated ids are not supported.

After saving above model, the index contains:

GET testidx/test/1
{
   "_index": "testidx",
   "_type": "test",
   "_id": "1",
   "_version": 1,
   "exists": true,
   "_source": {
      "title": "testtitle",
      "value": 45,
      "id": 1
   }
}

If you want to update a document, save it with update option set to true.

var model = new TestModel({
  title: 'newtitle',
  id: 1
});
model.save(null, {update: true});
var query = {
  wildcard: {
    name: '*abc*'
  }
};
var collection = new this.Collection();
collection.fetch({query: query})

Accepts query DSL options as Object.

Define index to search from. Supports also multi index syntax.

Apply search to only given type(s).

Apply filter to the query.

Apply sort to query.

Boost defined indices.

If set to true, do a multi search

This adapter is not fully backbone-db compliant, since query DSL is using Elasticsearch syntax, instead of MongoDB syntax. Currently supported version of ES is 1.3.2.

Dynamic scripting should be enabled in /usr/local/opt/elasticsearch/config/elasticsearch.yml:

script.disable_dynamic: false