概述编辑

这是 Elasticsearch 的官方 Rust 客户端。完整的文档托管在 docs.rs 上——此页面仅提供概述。

更多资源

特性编辑

  • 所有 Elasticsearch REST API 端点的流畅构建器
  • 持久保持活动连接
  • 使用系统或自定义证书的 TLS 支持
  • 支持带有身份验证的代理
  • 使用 Tokio 的异步支持

Elasticsearch 版本兼容性编辑

Elasticsearch Rust 客户端是向前兼容的;这意味着客户端支持与更高次要版本的 Elasticsearch 通信。Elasticsearch 语言客户端也向后兼容较低支持的次要 Elasticsearch 版本。

创建客户端编辑

要创建客户端以对运行在 \https://127.0.0.1:9200 上的 Elasticsearch 进行 API 调用

let client = Elasticsearch::default();

或者,您可以创建客户端以对运行在特定 url::Url 上的 Elasticsearch 进行 API 调用

let transport = Transport::single_node("https://example.com")?;
let client = Elasticsearch::new(transport);

如果您针对 Elastic Cloud 中的 Elasticsearch 部署运行,则可以使用从 Cloud Web 控制台检索到的 Cloud ID 和凭据创建客户端

let cloud_id = "<cloud id from cloud web console>";
let credentials = Credentials::Basic("<username>".into(), "<password>".into());
let transport = Transport::cloud(cloud_id, credentials)?;
let client = Elasticsearch::new(transport);

进行 API 调用编辑

以下操作对 tweets/_search 进行 API 调用,json 主体为 {"query":{"match":{"message":"Elasticsearch"}}}

let response = client
    .search(SearchParts::Index(&["tweets"]))
    .from(0)
    .size(10)
    .body(json!({
        "query": {
            "match": {
                "message": "Elasticsearch rust"
            }
        }
    }))
    .send()
    .await?;

let response_body = response.json::<Value>().await?;
let took = response_body["took"].as_i64().unwrap();
for hit in response_body["hits"]["hits"].as_array().unwrap() {
    // print the source document
    println!("{:?}", hit["_source"]);
}