- Lead: Dean McDonnell
- Sponsor: nearForm
A micro-service that provides search for NodeZoo. This micro-service requires an instance of elastic-search running in order to correctly function. If elastic-search cannot be reached the service will self terminate.
If you're using this microservice, and need help, you can:
- Post a github issue,
- Tweet to @nodezoo,
- Ask on the Gitter.
This micro-service can be ran as part of a complete system or as a single isolated unit.
A special system repository is available that runs the complete system using Docker and Fuge.
To make testing easier this micro-service can be ran in 'isolated' mode. This mode allows testing over http using a well defined port. Please note isolated mode means patterns are not exposed via mesh.
To run in isolated mode,
- Clone this repository locally,
- Run
npm install
, - Run
SEARCH_ELASTIC_HOST=YOUR_HOST npm start isolated
,
Note: You will need to know the cost of your vm if using Docker.
A simple http service is supported and can be called using Curl or other Rest client.
The default port is 8060
. It can be changed using the SEARCH_PORT
environment
variable.
curl -d '{"role":"search","cmd":"search","query":"hapi"}' http://localhost:8060/act
A running instance of elastic search is required to use this service. Assuming you have docker installed.
- Start your docker machine if required
- Run
eval $(docker-machine env default)
to enable docker in your shell. - Run
docker-compose -f test/elastic.yml up
to start elastic
Please note, in isolation mode you need to pass the host ip of your docker-machine
if you are on an OS other than linux, obtain with docker-machine ip default
.
Various settings can be changed using environment variables, see the list below for all available variable names.
- The host to listen on in isolated mode.
- Defaults to
localhost
- The port to listen on in isolated mode.
- Defaults to
8060
.
- The host elastic will listen on.
- Defaults to
localhost
- The port elastic will listen on.
- Defaults to
9200
.
- Starts isolated mode.
- Defaults to
false
.
This micro-service handles the following messages.
Adds or inserts a record into elastic search
seneca.act(`role:search,cmd:upsert`, {data: {name:'seneca', ...}})
Applies the provided query to elastic-search and returns the results.
seneca.act(`role:search,cmd:search`, {query: 'seneca'}, (err, reply) => {})
Aliases upsert, this pattern is an integration point for the nodezoo system. It allows the info micro-service to upsert without specifically calling nodezoo-search.
seneca.act(`role:info,info:updated`, {data: {name:'seneca', ...}})
This micro-service emits no messages.
The NodeZoo org encourages open and safe participation.
If you feel you can help in any way, be it with documentation, examples, extra testing, or new features please get in touch.
Copyright (c) 2014 - 2016, Richard Rodger and other contributors. Licensed under MIT.