summaryrefslogtreecommitdiffstats
path: root/src/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse.rs')
-rw-r--r--src/parse.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/parse.rs b/src/parse.rs
index 8656daa..07c55a0 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -241,6 +241,14 @@ pub enum ApiQueryOrArray {
#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
+#[serde(untagged)]
+pub enum ApiQueryNamedOrArray {
+ Named(HashMap<String, ApiQuery>),
+ Array(Vec<ApiQuery>),
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+#[serde(deny_unknown_fields)]
pub struct ApiHighlight {
// TODO: fields could also be an array of strings?
fields: HashMap<String, HighlightField>,
@@ -644,6 +652,8 @@ pub struct ApiAggregation {
#[serde(skip_serializing_if = "Option::is_none")]
filter: Option<ApiQuery>,
#[serde(skip_serializing_if = "Option::is_none")]
+ filters: Option<FiltersAggregation>,
+ #[serde(skip_serializing_if = "Option::is_none")]
histogram: Option<SimpleAggregation>,
#[serde(skip_serializing_if = "Option::is_none")]
terms: Option<TermsAggregation>,
@@ -715,6 +725,14 @@ pub struct DateHistogramAggregation {
#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
+pub struct FiltersAggregation {
+ #[serde(skip_serializing_if = "Option::is_none")]
+ other_bucket_key: Option<String>,
+ filters: ApiQueryNamedOrArray,
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+#[serde(deny_unknown_fields)]
pub struct TermsAggregation {
field: String,
#[serde(skip_serializing_if = "Option::is_none")]