elastic_reqwest Latest Version

Provides a synchronous reqwest implementation of the Elasticsearch REST API. The reqwest client is simple to use; there's basically no setup needed besides creating a reqwest::Client object to use for requests. The reqwest client is general-purpose, and suitable for any scenario where on-demand requests are sufficient.

If you'd prefer to call Elasticsearch using a strongly-typed Query DSL builder, see rs-es.

Build Status

Platform | Channel | Status ------------- | ------------- | ------------- Linux / OSX | Stable / Nightly | Build Status Windows | Nightly | Build status

Documentation

Version | Docs ------------- | ------------- master | Documentation current | Documentation

Example

The elastic_reqwest client is a thin layer over reqwest; it just maps functions to routes. It's up to the caller to serialise and deserialise HTTP content. - For query serialisation, the json_str crate provides the json_str! macro for creating ad-hoc API queries. - For type serialisation / deserialisation, see elastic_types.

Currently targeting the master Elasticsearch branch, aiming for 5.x. This will be stabilised through features in the future.

Add elastic_reqwest and json_str to your Cargo.toml:

``` [dependencies] elasticrequests = "*" elasticreqwest = "" reqwest = ""

Optional for request bodies

json_str = "*" ```

Ping the availability of your cluster:

```rust extern crate elasticrequests as req; extern crate elasticreqwest as cli; extern crate reqwest;

use cli::ElasticClient; use req::PingRequest;

let (client, params) = cli::default().unwrap();

client.elastic_req(&params, PingRequest::new()).unwrap(); ```

Customise the location of the Elasticsearch cluster:

rust let (mut client, mut params) = elastic::default(); params.base_url = String::from("http://eshost:9200");

A query DSL query:

```rust

[macro_use]

extern crate jsonstr; extern crate elasticrequests as req; extern crate elastic_reqwest as cli; extern crate reqwest;

use cli::ElasticClient; use req::SearchRequest;

let (client, params) = cli::default().unwrap();

let search = SearchRequest::forindexty( "myindex", "mytype", jsonstr!({ query: { filtered: { query: { matchall: {} }, filter: { geo_distance: { distance: "20km", location: { lat: 37.776, lon: -122.41 } } } } } }) );

client.elastic_req(&params, search).unwrap(); ```