summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@archive.org>2020-12-17 12:13:02 -0800
committerBryan Newbold <bnewbold@archive.org>2020-12-17 12:13:02 -0800
commitea372f042788f61a53ebbca3486090cc8577a20a (patch)
treee143999bda29ada7eb045798183f763dccc9887b
parent26dd0d0ad8cc9ce29a3db6dd35b800654ff393ae (diff)
downloades-public-proxy-ea372f042788f61a53ebbca3486090cc8577a20a.tar.gz
es-public-proxy-ea372f042788f61a53ebbca3486090cc8577a20a.zip
add support for 'filters' aggregation
-rw-r--r--src/parse.rs18
-rw-r--r--tests/files/search/GET_search_agg_filters.txt14
-rw-r--r--tests/files/search/GET_search_agg_filters_anon.txt14
-rw-r--r--tests/files/search/GET_search_agg_filters_other.txt15
4 files changed, 61 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")]
diff --git a/tests/files/search/GET_search_agg_filters.txt b/tests/files/search/GET_search_agg_filters.txt
new file mode 100644
index 0000000..74b2976
--- /dev/null
+++ b/tests/files/search/GET_search_agg_filters.txt
@@ -0,0 +1,14 @@
+GET /logs/_search
+{
+ "size": 0,
+ "aggs" : {
+ "messages" : {
+ "filters" : {
+ "filters" : {
+ "errors" : { "match" : { "body" : "error" }},
+ "warnings" : { "match" : { "body" : "warning" }}
+ }
+ }
+ }
+ }
+}
diff --git a/tests/files/search/GET_search_agg_filters_anon.txt b/tests/files/search/GET_search_agg_filters_anon.txt
new file mode 100644
index 0000000..baa550d
--- /dev/null
+++ b/tests/files/search/GET_search_agg_filters_anon.txt
@@ -0,0 +1,14 @@
+GET /logs/_search
+{
+ "size": 0,
+ "aggs" : {
+ "messages" : {
+ "filters" : {
+ "filters" : [
+ { "match" : { "body" : "error" }},
+ { "match" : { "body" : "warning" }}
+ ]
+ }
+ }
+ }
+}
diff --git a/tests/files/search/GET_search_agg_filters_other.txt b/tests/files/search/GET_search_agg_filters_other.txt
new file mode 100644
index 0000000..dd54e48
--- /dev/null
+++ b/tests/files/search/GET_search_agg_filters_other.txt
@@ -0,0 +1,15 @@
+GET /logs/_search
+{
+ "size": 0,
+ "aggs" : {
+ "messages" : {
+ "filters" : {
+ "other_bucket_key": "other_messages",
+ "filters" : {
+ "errors" : { "match" : { "body" : "error" }},
+ "warnings" : { "match" : { "body" : "warning" }}
+ }
+ }
+ }
+ }
+}