11 个版本
0.5.0 | 2024 年 7 月 26 日 |
---|---|
0.4.3 | 2024 年 1 月 20 日 |
0.4.2 | 2023 年 12 月 15 日 |
0.4.0 | 2023 年 9 月 1 日 |
0.1.1 | 2023 年 8 月 9 日 |
#591 in 网页编程
每月下载量 127
195KB
3K SLoC
Solrstice: Rust 和 Python 的 Solr 8+ 客户端
Solrstice 是一个用 Rust 编写的 SolrCloud 意识客户端库。它还提供了一个用于 Python 的包装器。
功能
- 配置 API
- 集合 API
- 别名 API
- 选择文档
- 分组组件查询
- DefTypes (lucene, dismax, edismax)
- 分面计数(查询、字段、旋转)
- Json 分面(查询、统计、术语、嵌套)
- 索引文档
- 删除文档
示例
上传配置,创建集合,索引文档,选择并删除。
use serde::{Deserialize, Serialize};
use solrstice::AsyncSolrCloudClient;
use solrstice::SolrSingleServerHost;
use solrstice::SolrBasicAuth;
use solrstice::SolrServerContextBuilder;
use solrstice::models::error::SolrError;
use solrstice::{DeleteQuery, UpdateQuery};
use solrstice::SelectQuery;
use std::path::Path;
#[derive(Serialize, Deserialize, Debug)]
struct TestData {
id: String,
}
#[tokio::test]
pub async fn example() -> Result<(), SolrError> {
//Create a solr client. You can also use a list of zookeeper hosts instead of a single server.
let context = SolrServerContextBuilder::new(SolrSingleServerHost::new("http://localhost:8983"))
.with_auth(SolrBasicAuth::new("solr", Some("SolrRocks"))).build();
let client = AsyncSolrCloudClient::new(context);
// Upload config
client
.upload_config("example_config", Path::new("/path/to/config"))
.await?;
// Create collection
client
.create_collection("example_collection", "example_config", 1, 1)
.await?;
// Index document
let docs = vec![TestData {
id: "example_document".to_string(),
}];
client
.index(
&UpdateQuery::new(),
"example_collection",
docs.as_slice(),
)
.await?;
// Search and retrieve the document
let docs = client
.select(
&SelectQuery::new().fq(["id:example_document"]),
"example_collection",
)
.await?
.get_docs_response()
.ok_or("No response provided")?
.get_docs::<TestData>()?;
// Delete the document
client
.delete(
&DeleteQuery::new().ids(["example_document"]),
"example_collection",
)
.await?;
Ok(())
}
依赖项
~12–26MB
~419K SLoC