- Notifications
You must be signed in to change notification settings - Fork19
ef-labs/vertx-elasticsearch-service
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Vert.x 3 elasticsearch service with event bus proxying.
vert.x | elasticsearch | vertx-elasticsearch-service |
---|---|---|
3.3.1 | 2.2.0 | 2.2.0 |
3.0.0 | 1.7.2 | 2.1.0 |
2.1.x | 1.3.2 | 1.3.0 (vertx-mod-elasticsearch) |
The configuration options are as follows:
{"address":<address>,"transportAddresses": [ {"hostname":<hostname>, "port": <port>} ],"cluster_name":<cluster_name>,"client_transport_sniff":<client_transport_sniff>,"requireUnits":false}
address
- The event bus address to listen on. The default is"et.vertx.elasticsearch"
.transportAddresses
- An array of transport address objects containinghostname
andport
. If no transport address are provided the default is"localhost"
and9300
hostname
- the ip or hostname of the node to connect to.port
- the port of the node to connect to. The default is9300
.
cluster_name
- the elastic search cluster name. The default is"elasticsearch"
.client_transport_sniff
- the client will sniff the rest of the cluster and add those into its list of machines to use. The default istrue
.requireUnits
- boolean flag whether units are required. The default isfalse
.
An example configuration would be:
{"address":"eb.elasticsearch","transportAddresses": [ {"hostname":"host1","port":9300 }, {"hostname":"host2","port":9301 } ],"cluster_name":"my_cluster","client_transport_sniff":true}
NOTE: No configuration is needed if running elastic search locally with the default cluster name.
TheDefaultElasticSearchService
requires aTransportClientFactory
andElasticSearchConfigurator
to be injected.
Default bindings are provided for HK2 and Guice, but you can create your own bindings for your container of choice.
See theenglishtown/vertx-hk2 orenglishtown/vertx-guice projects for further details.
http://www.elasticsearch.org/guide/reference/api/index_/
Send a json message to the event bus with the following structure:
{"action":"index","_index":<index>,"_type":<type>,"_id":<id>,"_source":<source>}
index
- the index name.type
- the type name.id
- the string id of the source to insert/update. This is optional, if missing a new id will be generated by elastic search and returned.source
- the source json document to index
An example message would be:
{"action":"index","_index":"twitter","_type":"tweet","_id":"1","_source": {"user":"englishtown","message":"love elastic search!" }}
The event bus replies with a json message with the following structure:
{"status":<status>,"_index":<index>,"_type":<type>,"_id":<id>,"_version"<version>}
status
- eitherok
orerror
index
- the index where the source document is storedtype
- the type of source documentid
- the string id of the indexed source documentversion
- the numeric version of the source document starting at 1.
An example reply message would be:
{"status":"ok","_index":"twitter","_type":"tweet","_id":"1","_version":1}
NOTE: A missing document will always be created (upsert
mode) because theop_type
parameter is not implemented yet (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html).
http://www.elasticsearch.org/guide/reference/api/get/
Send a json message to the event bus with the following structure:
{"action":"get","_index":<index>,"_type":<type>,"_id":<id>}
index
- the index name.type
- the type name.id
- the string id of the source to get.
An example message would be:
{"action":"get","_index":"twitter","_type":"tweet","_id":"1"}
The event bus replies with a json message with the following structure:
{"status":<status>,"_index":<index>,"_type":<type>,"_id":<id>,"_version":<version>"_source":<source>}
status
- eitherok
orerror
index
- the index name.type
- the type name.id
- the string id of the source to insert/update. This is optional, if missing a new id will be generated by elastic search and returned.version
- the numeric version of the source document starting at 1.source
- the source json document to index
An example message would be:
{"status":"ok","_index":"twitter","_type":"tweet","_id":"1","_version":1"_source": {"user":"englishtown","message":"love elastic search!" }}
http://www.elasticsearch.org/guide/reference/api/search/
http://www.elasticsearch.org/guide/reference/query-dsl/
Send a json message to the event bus with the following structure:
{"action":"search","_index":<index>,"_indices":<indices>,"_type":<type>,"_types":<types>,"query":<query>,"postFilter":<postFilter>,"facets":<facets>,"search_type":<search_type>,"scroll":<scroll>,"size":<size>,"from":<from>,"fields":<fields>,"timeout":<timeout>}
index
- a string index to be searched. This is optional.indices
- an array of string indices to be searched. This is optional.type
- a string type to be searched. This is optional.types
- an array of string types to be searched. This is optional.query
- a json object, see the elastic search documentation for details (http://www.elasticsearch.org/guide/reference/query-dsl/). This is optional.postFilter
- a json object, see the elastic search documentation for details (http://www.elasticsearch.org/guide/reference/api/search/postFilter/). This is optional.facets
- a json object, see the elastic search documentation for details (http://www.elasticsearch.org/guide/reference/api/search/facets/). This is optional.search_type
- a string to specify the type of search to be performed (http://www.elasticsearch.org/guide/reference/api/search/search-type/). This is optional. Possible values include:- query_and_fetch - execute the query on all relevant shards
- query_then_fetch - query is executed against all shards, but documents are not returned. The results are then sorted and ranked and then only the relevant shards are asked for the documents.
- dfs_query_and_fetch - same as query_and_fetch, except for an initial scatter phase for more accurate scoring.
- dfs_query_then_fetch - same as query_then_fetch, except for an initial scatter phase for more accurate scoring.
- count - returns the count without any documents
- scan - use this to scroll a large result set
scroll
- a string time value parameter (ex."5m"
or"30s"
). This is only required when search_type isscan
.size
- a number representing the max number of results to be returned. The default if not specified is 10. (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html). This is optional.from
- a number representing the offset from the first result to be returned. The default if not specified is 0. (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html). This is optional.fields
- an array of strings representing the fields to return. Else the entire document is returned. (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html). This is optional.timeout
- a number representing the timeout in milliseconds that should be given to elasticsearch to perform a command. This is optional.
An example message would be:
{"action":"search","_index":"twitter","_type":"tweet","query": {"match": {"user":"englishtown" } }}
The event bus replies with a json message with a status"ok"
or"error"
along with the standard elastic search json search response. See the documentation for details.
An example reply message for the query above would be:
{"status":"ok","took" :3,"timed_out" :false,"_shards" : {"total" :5,"successful" :5,"failed" :0 },"hits" : {"total" :2,"max_score" :0.19178301,"hits" : [ {"_index" :"twitter","_type" :"tweet","_id" :"1","_score" :0.19178301,"_source" : {"user":"englishtown","message" :"love elastic search!" } }, {"_index" :"twitter","_type" :"tweet","_id" :"2","_score" :0.19178301,"_source" : {"user":"englishtown","message" :"still searching away" } } ] }}
http://www.elasticsearch.org/guide/reference/api/search/scroll/
First send a search message withsearch_type
="scan"
andscroll
="5m"
(some time string). The search result will include a_scroll_id
that will be valid for the scroll time specified.
Send a json message to the event bus with the following structure:
{"action":"scroll","_scroll_id":<_scroll_id>,"scroll":<scroll>}
_scroll_id
- the string scroll id returned from the scan search.scroll
- a string time value parameter (ex."5m"
or"30s"
).
An example message would be:
{"action":"scroll","_scroll_id":"c2Nhbjs1OzIxMTpyUkpzWnBIYVMzbVB0VGlaNHdjcWpnOzIxNTpyUkpzWnBI","scroll":"5m"}
The event bus replies with a json message with a status"ok"
or"error"
along with the standard elastic search json scroll response. See the documentation for details.
An example reply message for the scroll above would be:
{"status":"ok","_scroll_id":"c2Nhbjs1OzIxMTpyUkpzWnBIYVMzbVB0VGlaNHdjcWpnOzIxNTpyUkpzWnBI","took":2,"timed_out":false,"_shards": {"total":5,"successful":5,"failed":0 },"hits" : {"total" :2,"max_score" :0.0,"hits" : [ {"_index" :"twitter","_type" :"tweet","_id" :"1","_score" :0.0,"_source" : {"user":"englishtown","message" :"love elastic search!" } }, {"_index" :"twitter","_type" :"tweet","_id" :"2","_score" :0.0,"_source" : {"user":"englishtown","message" :"still searching away" } } ] }}
http://www.elasticsearch.org/guide/reference/api/delete/
Send a json message to the event bus with the following structure:
{"action":"delete","_index":<index>,"_type":<type>,"_id":<id>}
index
- the index name.type
- the type name.id
- the string id of the document to delete.
An example message would be:
{"action":"delete","_index":"twitter","_type":"tweet","_id":"1"}
The event bus replies with a json message with the following structure:
{"found":<status>,"_index":<index>,"_type":<type>,"_id":<id>,"_version":<version>}
found
- eithertrue
orfalse
index
- the index name.type
- the type name.id
- the string id of the source to delete.version
- the numeric version of the deleted document starting at 1.
An example message would be:
{"found":"true","_index":"twitter","_type":"tweet","_id":"1","_version":1}
About
Vert.x elasticsearch service with event bus proxying
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors7
Uh oh!
There was an error while loading.Please reload this page.