Riak + ElasticSearch connector for loopback-datasource-juggler. This adapter makes heavy use of ElasticSearch as a search front-end with Riak as the primary data store.
This adapter is based on the official Basho Riak client library and the official Elasticsearch client library.
- Riak 2.x
- Node.js v0.12+
- Relational queries aren't in your technical requirements. Use a relational database. If so, Loopback supports multiple datasources, so maybe mix and match?
The Riak connector can be configured much like any other Loopback connector using the datasources JSON files.
{
"db": {
"name": "db",
"connector": "riak-es",
"host": [
"riak1.local.foo.com",
"riak2.local.foo.com",
"riak3.local.foo.com",
"riak4.local.foo.com",
"riak5.local.foo.com"
],
"elasticsearch": "es.local.foo.com",
"node_config" : { //optional riak node config
"maxConnections": 128,
"minConnections": 1,
"idleTimeout": 10000,
"connectionTimeout": 3000,
"requestTimeout": 5000,
"cork": true
}
}
}- bucket types
- 'include' filter support is experimental
- relational features such as hasMany, belongsTo, hasManyAndBelongsTo, are not supported as Riak is not a relational database (there is a chance they will work, but they are not tested)
- Some things that are normal in other databases are expensive with Riak and this connector doesn't try to hide any of that, although it does try to take the shortest path (like looking up by key whenever possible.)
- The [email protected] has a dependency (hoek, loaded from joi) that has a moderate vulnerability. bash-riak-client is no longer maintained, but we contacted the author to see what options we have. Worst case, we'll make a new npm and fix the vulnerability.
- 1.2.3 Expanded LIMIT to match elasticsearch's max_result_window setting.
- 1.2.2 Fixed issue with LIMIT not being honored in search queries.
- 1.2.1 Fixed error in console logging on undefined index
- 1.2.0 Tests passing with ElasticSearch
- 1.0.0 Currently in production over at Dittach. Tests are passing.
- 0.1.x Improvements to test coverage, feature support, Node v0.12+ support.
- 0.0.x Proof-of-concept releases