#query-builder #elasticsearch #dsl #mapping #build

elastic-query-builder

ElasticSearch 查询构建器

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数据库接口

Download history 2/week @ 2024-05-05 7/week @ 2024-05-19 8/week @ 2024-05-26 14/week @ 2024-06-02 3/week @ 2024-06-09 1/week @ 2024-06-16 275/week @ 2024-06-30 539/week @ 2024-07-28 12/week @ 2024-08-04 6/week @ 2024-08-11

557 每月下载
2 个 Crates 中使用 (通过 uiuifree-elastic)

MIT 许可证

79KB
2.5K SLoC

ElasticQueryBuilder

Crates.io GitHub

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