elastic_reqwest
Provides a no-fuss, 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. It also splits the request process into a few logical methods that could be easily split across asynchronous boundaries.
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
.
For a higher-level client that supports strongly-typed response parsing, document mapping see elastic
. It uses elastic_reqwest
as its HTTP layer.
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, ParseResponse, parse}; use cli::req::PingRequest; use cli::res::PingResponse;
let (client, params) = cli::default().unwrap();
let httpres = client.elasticreq(¶ms, PingRequest::new()).unwrap();
let parseres = parse::
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, ParseResponse, parse}; use cli::req::SearchRequest; use cli::res::SearchResponse;
let (client, params) = cli::default().unwrap();
let search = { let body = jsonstr!({ query: { filtered: { query: { matchall: {} }, filter: { geo_distance: { distance: "20km", location: { lat: 37.776, lon: -122.41 } } } } } });
SearchRequest::for_index_ty("myindex", "mytype", body)
};
let httpres = client.elasticreq(¶ms, search).unwrap();
let searchres = parse::