39 个版本
0.1.38 | 2024年7月29日 |
---|---|
0.1.36 | 2024年2月1日 |
0.1.35 | 2023年9月20日 |
0.1.32 | 2023年2月24日 |
0.1.3 | 2022年2月25日 |
#259 在 数据库接口
557 每月下载
在 2 个 Crates 中使用 (通过 uiuifree-elastic)
79KB
2.5K SLoC
ElasticQueryBuilder
ElasticQueryBuilder 是一个查询构建器,旨在轻松构建与 ElasticSearch 相关的 DSL。
安装
# Cargo.toml
[dependencies]
elastic-query-builder ="0.1"
Future
- 映射
- DML 查询
- 聚合
映射
fn main() {
let mut mapping = MappingBuilder::new();
mapping
.add_property("title", KeywordFieldType::new())
.add_property("content", TextFieldType::new());
assert_eq!(
mapping.build().to_string(),
r#"{"mappings":{"properties":{"content":{"type":"text"},"title":{"type":"keyword"}}}}"#
);
}
DML 查询
构建 JSON 查询
fn main() {
let mut query = QueryBuilder::new();
query.set_query(MatchQuery::new("field", "value"));
query.set_from(10);
query.set_size(100);
let value_json = query.build();
}
提供查询
- bool_query
- exists_query
- geo_distance_query
- match_all_query
- match_query
- multi_match_query
- nested
- range_query
- script_query
- script_score_query
- term_query
- terms_query
- wildcard_query
BoolQuery 示例
fn main() {
let mut query = QueryBuilder::new();
let mut bool = BoolQuery::new();
bool.add_must(MatchQuery::new("field1", "value"));
bool.add_must_not(MatchQuery::new("field2", "value"));
bool.add_should(MatchQuery::new("field3", "value"));
query.set_query(bool);
}
Nested 示例
fn main() {
let mut query = QueryBuilder::new();
let nested = NestedQuery::new("locations", MatchQuery::new("locations.country", "JP"));
query.set_query(nested);
}
依赖项
~0.7–1.6MB
~35K SLoC