# elastiql [![Latest Version]][crates.io] [![Docs]][docs.rs] [![CI]][github-actions] [CI]: https://github.com/voxjar/elastiql/workflows/CI/badge.svg [github-actions]: https://github.com/voxjar/elastiql/actions [latest version]: https://img.shields.io/crates/v/elastiql.svg [crates.io]: https://crates.io/crates/elastiql [docs]: https://docs.rs/elastiql/badge.svg [docs.rs]: https://docs.rs/elastiql > An opinionated [Elasticsearch] query language for [Rust]. This library pairs nicely with the official Elasticsearch [crate] and the [async-graphql] crate. It is meant to be a more batteries included approach to working with [Elasticsearch] in [Rust] than the official [crate] (see: [elastic/elasticsearch-rs#75]). ### project status This project has not yet reached `v1.0.0`. As such, you can expect some amount of breaking changes. It has also not (yet) been published to _crates.io_, but most likely will in the future. We have defined types (optionally with [`builder`] methods) for most Elasticsearch [aggregations], [query DSL] and other miscellaneous request/response types. ### usage This crate allows for more idiomatic request/response handling, e.g.: ```rust let query = Request::builder() .query(TermQuery::new("id", "test_user_id")) .size(1) .version(true) .highlight(HighlightOptions::default()) .build(); ``` For more examples, see the [examples](examples) directory. ### differences between the Elasticsearch REST API Because this project is expected to mainly be used via [GraphQL] some concessions had to be made to balance idiomatic [Rust], [Elasticsearch] and [GraphQL]. For example, the structure of aggregation responses is not true to [Elasticsearch] and is vastly simplified. #### License Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in elastiql by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. [`builder`]: https://crates.io/crates/typed-builder [aggregations]: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html [async-graphql]: https://crates.io/crates/async-graphql [crate]: https://crates.io/crates/elasticsearch [elasticsearch]: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html [graphql]: https://graphql.org/ [query dsl]: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html [rust]: https://www.rust-lang.org/ [elastic/elasticsearch-rs#75]: https://github.com/elastic/elasticsearch-rs/issues/75