backbone-db-elasticsearch
Defining search properties
Example:
var TestModel = Model.extend({
...
type: 'footype',
searchOptions: {
index: 'testidx',
},
searchValues: function() {
return this.toJSON();
}
});
type
Type defines the document's _type field
searchOptions
seachOptions object must define:
- index: index where document is stored
searchValues
searchValues function should return Object containing keys & values to be indexed.
Adding data to index
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
}
}
Updating a document
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});
Querying documents
var query = {
wildcard: {
name: '*abc*'
}
};
var collection = new this.Collection();
collection.fetch({query: query})
Options
query
Accepts query DSL options as Object.
index
Define index to search from. Supports also multi index syntax.
type
Apply search to only given type(s).
filter
Apply filter to the query.
sort
Apply sort to query.
indicesBoost
Boost defined indices.
msearch
If set to true, do a multi search
Notes
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.
Configuration
Dynamic scripting should be enabled in /usr/local/opt/elasticsearch/config/elasticsearch.yml
:
script.disable_dynamic: false