Expand description

Strongly typed Elasticsearch DSL written in Rust

This is an unofficial library and doesn’t yet support all the DSL, it’s still work in progress.

Features

  • Strongly typed queries
  • Strongly typed aggregations
  • Automatically skips empty queries making DSL pleasant to use
  • Crate doesn’t depend on elasticsearch-rs and can be used as a standalone library with any HTTP client to call Elasticsearch

Installation

Add elasticsearch-dsl crate and version to Cargo.toml

[dependencies]
elasticsearch-dsl = "0.2"

Documentation

Documentation for the library is available on docs.rs

Quick start

use elasticsearch_dsl::*;

fn main() {
    let query = Search::new()
        .source(false)
        .stats("statistics")
        .from(0)
        .size(30)
        .query(
            Query::bool()
                .must(Query::multi_match(
                    ["title", "description"],
                    "you know, for search",
                ))
                .filter(Query::terms("tags", ["elasticsearch"]))
                .should(Query::term("verified", true).boost(10)),
        )
        .aggregate(
            "country_ids",
            Aggregation::terms("country_id")
                .aggregate("catalog_ids", Aggregation::terms("catalog_id"))
                .aggregate("company_ids", Aggregation::terms("company_id"))
                .aggregate(
                    "top1",
                    Aggregation::top_hits()
                        .size(1)
                        .sort(FieldSort::ascending("user_id")),
                ),
        ).rescore(Rescore::new(Query::term("field", 1)).query_weight(1.2));
}

See examples for more.

License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Re-exports

pub use self::analyze::*;
pub use self::search::*;

Modules

Performs analysis on a text string and returns the resulting tokens.
Search APIs are used to search and aggregate data stored in Elasticsearch indices and data streams. For an overview and related tutorials, see Search your data.

Type Definitions

Map type alias for the whole library
Set type alias for the whole library