Basic Elasticsearch datasource connector for Loopback.
This connector have difference with the original. You can have one specific Type by model. The original you can only have one index and one type configured from settings. This module can still have only one index but you can have for etch model one Type.
Exemple :
Loopback Model Music ==> Elasticsearch Type = Music
-
Download and install Elasticsearch
-
Goto /elasticsearch-path/bin$ and execute ./elasticsearch
-
Optional install head plugin
-
Open browser and goto default url: http://localhost:9200/
-
To use head plugin goto: http://localhost:9200/_plugin/head/
-
If all is ok then the result is some this:
{ status: 200, name: "Arno Stark", version: { number: "1.3.2", build_hash: "dee175dbe2f254f3f26992f5d7591939aaefd12f", build_timestamp: "2014-08-13T14:29:30Z", build_snapshot: false, lucene_version: "4.9" }, tagline: "You Know, for Search" }
Run in terminal:
curl -XPUT http://localhost:9200/shakespeare -d '{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string", "index" : "not_analyzed" },
"line_id" : { "type" : "integer" },
"speech_number" : { "type" : "integer" }
}
}
}
}';
Import data example to Elasticsearch:
cd examples/data
curl -XPUT localhost:9200/_bulk --data-binary @shakespeare.json
Install StrongLoop command line interface:
npm install -g strong-cli
Create project:
slc loopback:loopback
set project path and name
Attach datasource (see /server/datasources.json):
slc loopback:datasource test-elastic
select loopback-connector-elastic
Create model (see /examples/entry.json):
slc loopback:model entry
npm install loopback-connector-elastic-search --save
Edit datasources.json and set:
[ConnectorEntry] : {
"host": [127.0.0.1],
"port": [9200],
"name": [Name],
"connector": "elastic-search",
...
"log": "trace",
"defaultSize": [Rows],
"index": [IndexName],
// "type": [TypeName] // I remove this line because it will fix to only one type.
}
- Host: Elasticsearch engine host address.
- Port: Elasticsearch engine port.
- Name: Connector name.
- Connector: Elasticsearch driver.
- Log: logging option.
- DefaultSize: Rows to return per page.
- Index: Search engine specific index.
- Type: Search engine specific type.
Goto to examples folder and run:
npm install
Goto server folder and run:
node server.js
Open browse, and set in URL:
http://localhost:3000/explorer
To test a specific filter in GET method, use for example:
{"q" : "friends, romans, countrymen"}
- First beta version