elastic-query-builder

Crates.ioelastic-query-builder
lib.rselastic-query-builder
version0.1.39
sourcesrc
created_at2022-02-24 13:09:40.355405
updated_at2024-10-16 01:00:01.021514
descriptionElasticSearch Query Builder
homepage
repositoryhttps://github.com/uiuifree/elastic-query-builder
max_upload_size
id538507
size82,207
Misaki (uiuifree)

documentation

README

ElasticQueryBuilder

Crates.io GitHub

ElasticQueryBuilder is a query builder designed to easily build ElasticSearch related DSLs.

install

# Cargo.toml
[dependencies]
elastic-query-builder ="0.1"

Futures

  • Mapping

  • DML Query

  • Aggregation

Mapping

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 Query

Build Json Query

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();
}

Providing Query

  • 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 Example

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 Example

fn main() {
    let mut query = QueryBuilder::new();
    let nested = NestedQuery::new("locations", MatchQuery::new("locations.country", "JP"));
    query.set_query(nested);
}
Commit count: 67

cargo fmt