28 个版本
使用 Rust 2015 版本
0.20.10 | 2018年5月7日 |
---|---|
0.20.9 | 2018年2月6日 |
0.20.8 | 2017年12月17日 |
0.20.6 | 2017年11月30日 |
0.1.2 | 2016年12月31日 |
#1 in #req
221 每月下载量
在 2 个crate中使用(通过 elastic)
370KB
9K SLoC
elastic_reqwest
提供了一种无需麻烦、同步的 reqwest
实现的 Elasticsearch REST API。使用 reqwest
客户端非常简单;除了创建一个用于请求的 reqwest::Client
对象外,基本上不需要设置。该 reqwest
客户端是通用的,适用于任何需要即时请求的场景。它还将请求过程分为几个逻辑方法,这些方法可以很容易地跨越异步边界。
此库是高级 elastic
客户端的 HTTP 后端。
示例
elastic_reqwest
客户端是 reqwest
的一个薄层;它只是将函数映射到路由。序列化和反序列化 HTTP 内容的责任由调用者承担。
- 对于查询序列化,
json_str
crate 提供了json_str!
宏来创建临时的 API 查询。 - 对于类型序列化和反序列化,请参阅
elastic_types
。
目前针对 master
Elasticsearch 分支,目标为 5.x
。这将通过未来的功能得到稳定化。
将 elastic_reqwest
和 json_str
添加到您的 Cargo.toml
[dependencies]
elastic_reqwest = "*"
reqwest = "*"
# Optional for request bodies
json_str = "*"
检查集群的可用性
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 http_res = client.elastic_req(¶ms, PingRequest::new()).unwrap();
let parse_res = parse::<PingResponse>().from_response(http_res).unwrap();
自定义 Elasticsearch 集群的地址
let (mut client, mut params) = elastic::default();
params.base_url = String::from("http://eshost:9200");
查询 DSL 查询
#[macro_use]
extern crate json_str;
extern crate elastic_reqwest 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 = json_str!({
query: {
filtered: {
query: {
match_all: {}
},
filter: {
geo_distance: {
distance: "20km",
location: {
lat: 37.776,
lon: -122.41
}
}
}
}
}
});
SearchRequest::for_index_ty("myindex", "mytype", body)
};
let http_res = client.elastic_req(¶ms, search).unwrap();
let search_res = parse::<SearchResponse>().from_response(http_res).unwrap();
依赖项
~15–24MB
~426K SLoC