elastic_reqwest
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.
This library is the HTTP backend for the higher-level elastic
client.
Platform | Channel | Status
------------- | ------------- | -------------
Linux / OSX | Stable / Nightly |
Windows | Nightly |
Version | Docs
------------- | -------------
master
|
current
|
If you'd prefer to call Elasticsearch using a strongly-typed Query DSL builder, see rs-es
.
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] elastic_reqwest = "" reqwest = ""
json_str = "*" ```
Ping the availability of your cluster:
```rust extern crate elastic_reqwest as cli; extern crate reqwest;
use cli::ElasticClient; use cli::req::PingRequest;
let (client, params) = cli::default().unwrap();
client.elastic_req(¶ms, 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
extern crate jsonstr; extern crate elasticreqwest as cli; extern crate reqwest;
use cli::ElasticClient; use cli::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(¶ms, search).unwrap(); ```