Skip to content
Elasticsearch and appbase.io library for Android (and Java)
Java
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.recommenders updated the jar Jul 6, 2016
appbase/appbase-droid Initial commit with websocket Apr 10, 2017
doc Removed wrapping from query DSL May 28, 2019
out/production/main/META-INF Removed wrapping from query DSL May 28, 2019
src
.Rhistory Removed wrapping from query DSL May 28, 2019
.gitignore
.travis.yml chore: update to LTS jdk11 Jul 25, 2019
LICENSE Update LICENSE Jun 14, 2019
README.md chore: update latest release info in README Jul 26, 2019
appbase-droid-no-es.jar Removed wrapping from query DSL May 28, 2019
dependency-reduced-pom.xml Removed wrapping from query DSL May 28, 2019
pom.xml chore: update latest release info in README Jul 26, 2019
prod.jar Removed wrapping from query DSL May 28, 2019
test.jar Removed wrapping from query DSL May 28, 2019

README.md

appbase-droid

The missing Android client for Elasticsearch and appbase.io.

Download

Download the latest JAR or configure this dependency:

Maven:

<dependency>
  <groupId>io.appbase</groupId>
  <artifactId>appbase-droid</artifactId>
  <version>1.2.0</version>
</dependency>

Gradle:

implementation("io.appbase:appbase-droid:1.2.0")

Snapshots of the development version are available in Sonatype's snapshots repository.

Overview

appbase-droid is an Elasticsearch client library usable from an Android device.

We built this as there are currently no good or maintained Elasticsearch libraries out there for Android.

Our design goals in building appbase-droid are:

  1. Provide a lightweight library for querying right from Android (1MB in size),
  2. Maintain compatibility with Java so it can also be used as a lightweight Java alternative (20x lighter than the official Elasticsearch client library),
  3. Only support methods related to document and query DSL, ideally your Elasticsearch hosting environment comes with a read-only access.
  4. Bonus: Support for streaming data queries when Elasticsearch is hosted on appbase.io app; build live charts, newsfeeds, streaming search.

Quick Start

  • Creating the client

    AppbaseClient client = new AppbaseClient(url, appname, username, password);

Note: If you are hosting with appbase.io the url should be "https://scalr.api.appbase.io". The username should refer to the first part of the API credentials, and the password as the second part of it. You can get an idea on how to map the appname, username, password by viewing this GIF.

  • Index a document

    String result = client.prepareIndex(type, id, body)
      .execute()
      .body()
      .string();
    System.out.println(result);

    Sample Output:

    {
      "_index": "droid-test",
      "_type": "_doc",
      "_id": "xvvooe",
      "_version": 1,
      "result": "created",
      "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
      },
      "_seq_no": 18,
      "_primary_term": 3
    }
  • Update a document

    String result = client.prepareUpdate(type, id, parameters, doc)
      .execute()
      .body()
      .string();
    System.out.println(result);

    Sample Output:

    {
      "_index": "droid-test",
      "_type": "_doc",
      "_id": "eqsrxtmggk",
      "_version": 2,
      "result": "updated",
      "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
      },
      "_seq_no": 26,
      "_primary_term": 3
    }
  • Delete a document

    String result = client.prepareDelete(type, id)
      .execute()
      .body()
      .string();

    Sample Output:

    {
      "_index": "droid-test",
      "_type": "_doc",
      "_id": "smemya",
      "_version": 3,
      "result": "deleted",
      "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
      },
      "_seq_no": 26,
      "_primary_term": 3
    }
  • Get a document

    String result = client.prepareGet(type, id)
      .execute()
      .body()
      .string();

    Sample Output:

    {
      "_index": "droid-test",
      "_type": "_doc",
      "_id": "nvyxcec",
      "found": false
    }
  • Make a search request

    String query =  "{ \"query\": { \"term\": { \"price\": \"100\" } } }";
    String result = client.prepareSearch(type, query)
      .execute()
      .body()
      .string();

    Sample Output:

    {
      "took": 0,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1.0,
        "hits": [
          {
            "_index": "droid-test",
            "_type": "_doc",
            "_id": "bkxfsvddmo",
            "_score": 1.0,
            "_source": {
              "department_id": 1,
              "price": 5,
              "department_name": "Books",
              "name": "A Fake Book on Network Routing"
            }
          }
        ]
      }
    }

Documentation Reference

A brief primer on the supported methods.

See the online documentation reference.

Example

Checkout an example app built with appbase-droid.

How To Run Locally

Clone

git clone https://github.com/appbaseio/appbase-droid

Testing

mvn test

will test all the supported methods.

Developing

The codebase resides under the src/main/java/io/appbase path.

  • src/main/java/io/appbase/client contains the main interface methods.
  • src/main/java/io/appbase/requestbuilders contains utility methods for supporting an Elasticsearch Java client like request builder functionality.
  • src/main/java/io/appbase/interceptor contains a simple utility for supporting Basic Auth authentication.
  • src/main/java/io/appbase/trial contains a sample code that uses the library.

Test files reside under src/test/java/test path.

  • src/test/java/test/AppbaseTest is the main test file that currently tests 7 methods. It is also a good place to see the library usage.

You can’t perform that action at this time.