8个稳定版本
1.0.7 | 2020年12月6日 |
---|---|
1.0.6 | 2020年11月17日 |
1.0.5 | 2020年10月24日 |
1530 在 数据库接口
每月下载量 26次
37KB
995 行
actix-elastic
安装
将此包添加到您的项目中的 Cargo.toml
。(检查 https://crates.io/crates/actix-elastic 以获取正确版本)
[dependencies]
actix = "0.10.0"
actix-elastic = "1.0.0"
入门
- 创建一个Elastic Actix Actor
use actix::{Arbiter, Addr, Supervisor};
use actix_elastic::{EsClient, EsCmd, EsResult};
let arb = Arbiter::new();
let elastic_url = "http://127.0.0.1:9200"
let addr: Addr<EsClient<CustomType>> = Supervisor::start_in_arbiter(&arb, move |_| EsClient::new(elastic_url).unwrap());
- 发送Elastic命令
use serde_json::json;
addr.send(EsCmd::Index("example_index_1", ("id_1", CustomType))).await??;
addr.send(EsCmd::Search("example_index_1", json!({
"query": {
"match_all": {}
}
})).await??;
addr.send(EsCmd::DeleteByQuery("example_index_1", json!({
"query": {
"bool": {
"must": [
{
"match_phase": {
"name": "alice"
}
}
]
}
}
}))).await??;
- 滚动所有命中并给每个块分配给客户端
use actix_web::HttpResponse;
match addr.send(EsCmd::ScrollBytes("example_index_1", json!({
"query": {
"match_all": {}
}
}))).await?? {
EsResult::ScrollBytes(stream) => Ok(HttpResponse::Ok().content_type("application/json").streaming_response(stream)),
_ => unreachable!()
}
- 滚动反序列化项
match addr.send(EsCmd::ScrollItems("example_index_1", json!({
"query": {
"match_all": {}
}
}))).await?? {
EsResult::ScrollItems(mut stream) => {
while let Some(hits) = stream.next().await {
println!("{:?}", hits.len());
}
},
_ => unreachable!()
}
依赖项
~19MB
~390K SLoC