com.englishtown.vertx:vertx-elasticsearch-service

Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/

License

License

Categories

Categories

Search Business Logic Libraries Elasticsearch
GroupId

GroupId

com.englishtown.vertx
ArtifactId

ArtifactId

vertx-elasticsearch-service
Last Version

Last Version

2.2.0
Release Date

Release Date

Type

Type

jar
Description

Description

Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/
Project URL

Project URL

https://github.com/englishtown/vertx-elasticsearch-service
Project Organization

Project Organization

Englishtown
Source Code Management

Source Code Management

https://github.com/englishtown/vertx-elasticsearch-service

Download vertx-elasticsearch-service

How to add to project

<!-- https://jarcasting.com/artifacts/com.englishtown.vertx/vertx-elasticsearch-service/ -->
<dependency>
    <groupId>com.englishtown.vertx</groupId>
    <artifactId>vertx-elasticsearch-service</artifactId>
    <version>2.2.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.englishtown.vertx/vertx-elasticsearch-service/
implementation 'com.englishtown.vertx:vertx-elasticsearch-service:2.2.0'
// https://jarcasting.com/artifacts/com.englishtown.vertx/vertx-elasticsearch-service/
implementation ("com.englishtown.vertx:vertx-elasticsearch-service:2.2.0")
'com.englishtown.vertx:vertx-elasticsearch-service:jar:2.2.0'
<dependency org="com.englishtown.vertx" name="vertx-elasticsearch-service" rev="2.2.0">
  <artifact name="vertx-elasticsearch-service" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.englishtown.vertx', module='vertx-elasticsearch-service', version='2.2.0')
)
libraryDependencies += "com.englishtown.vertx" % "vertx-elasticsearch-service" % "2.2.0"
[com.englishtown.vertx/vertx-elasticsearch-service "2.2.0"]

Dependencies

compile (5)

Group / Artifact Type Version
org.elasticsearch : elasticsearch jar 2.2.0
io.vertx : vertx-service-proxy jar
io.vertx : vertx-codegen Optional jar
io.vertx : vertx-lang-js Optional jar
io.vertx : vertx-core jar 3.3.1

provided (2)

Group / Artifact Type Version
com.englishtown.vertx : vertx-hk2 jar 2.4.0
com.englishtown.vertx : vertx-guice jar 2.3.0

test (6)

Group / Artifact Type Version
org.elasticsearch : elasticsearch test-jar 2.2.0
org.apache.lucene : lucene-test-framework jar 5.4.1
com.englishtown.vertx : vertx-when jar 4.1.1
io.vertx : vertx-service-factory jar
junit : junit jar 4.12
io.vertx : vertx-core test-jar 3.3.1

Project Modules

There are no modules declared in this project.

Vert.x ElasticSearch Service

Vert.x 3 elasticsearch service with event bus proxying.

Build Status Maven Central

Version Matrix

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)

Configuration

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 containing hostname and port. If no transport address are provided the default is "localhost" and 9300
    • hostname - the ip or hostname of the node to connect to.
    • port - the port of the node to connect to. The default is 9300.
  • 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 is true.
  • requireUnits - boolean flag whether units are required. The default is false.

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.

Dependency Injection

The DefaultElasticSearchService requires a TransportClientFactory and ElasticSearchConfigurator to be injected.

Default bindings are provided for HK2 and Guice, but you can create your own bindings for your container of choice.

See the englishtown/vertx-hk2 or englishtown/vertx-guice projects for further details.

Action Commands

Index

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 - either ok or error
  • index - the index where the source document is stored
  • type - the type of source document
  • id - the string id of the indexed source document
  • version - 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 the op_type parameter is not implemented yet (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html).

Get

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 - either ok or error
  • 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!"
    }
}

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>
}

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"
                }
            }
        ]
    }
}

Scroll

http://www.elasticsearch.org/guide/reference/api/search/scroll/

First send a search message with search_type = "scan" and scroll = "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"
                }
            }
        ]
    }
}

Delete

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 - either true or false
  • 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
}
com.englishtown.vertx

Labs @ EF Education First

Repositories moving to https://github.com/ef-labs

Versions

Version
2.2.0
2.1.0
2.0.0
2.0.0-RC5
2.0.0-RC4
2.0.0-RC3
2.0.0-RC2
2.0.0-RC1