8个稳定版本

1.0.7 2020年12月6日
1.0.6 2020年11月17日
1.0.5 2020年10月24日

1530数据库接口

每月下载量 26次

MIT许可证

37KB
995

actix-elastic

安装

将此包添加到您的项目中的 Cargo.toml。(检查 https://crates.io/crates/actix-elastic 以获取正确版本)

[dependencies]
actix = "0.10.0"
actix-elastic = "1.0.0"

入门

  1. 创建一个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());
  1. 发送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??;
  1. 滚动所有命中并给每个块分配给客户端
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!()
}
  1. 滚动反序列化项

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