From 5ab5f070edb5ae7e2f00daeb626e517e8290d83a Mon Sep 17 00:00:00 2001 From: k-yomo Date: Tue, 26 Jul 2022 18:18:38 +0900 Subject: [PATCH] Fix to use bool directory for the keyed parameter --- src/aggregation/agg_req.rs | 2 +- src/aggregation/bucket/histogram/histogram.rs | 7 ++---- src/aggregation/bucket/range.rs | 5 ++--- src/aggregation/intermediate_agg_result.rs | 5 ++--- src/aggregation/mod.rs | 22 +++++++++++++------ 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/aggregation/agg_req.rs b/src/aggregation/agg_req.rs index 090ad985d..5c5a960fe 100644 --- a/src/aggregation/agg_req.rs +++ b/src/aggregation/agg_req.rs @@ -271,7 +271,7 @@ mod tests { (7f64..20f64).into(), (20f64..f64::MAX).into(), ], - keyed: Some(true), + keyed: true, }), sub_aggregation: Default::default(), }), diff --git a/src/aggregation/bucket/histogram/histogram.rs b/src/aggregation/bucket/histogram/histogram.rs index aab68739f..198a123e5 100644 --- a/src/aggregation/bucket/histogram/histogram.rs +++ b/src/aggregation/bucket/histogram/histogram.rs @@ -48,8 +48,6 @@ use crate::{DocId, TantivyError}; /// /// # Limitations/Compatibility /// -/// The keyed parameter (elasticsearch) is not yet supported. -/// /// # JSON Format /// ```json /// { @@ -118,8 +116,7 @@ pub struct HistogramAggregation { /// bounds would not be returned. pub extended_bounds: Option, /// Whether to return the buckets as a hash map - #[serde(skip_serializing_if = "Option::is_none")] - pub keyed: Option, + pub keyed: bool, } impl HistogramAggregation { @@ -1409,7 +1406,7 @@ mod tests { bucket_agg: BucketAggregationType::Histogram(HistogramAggregation { field: "score_f64".to_string(), interval: 50.0, - keyed: Some(true), + keyed: true, ..Default::default() }), sub_aggregation: Default::default(), diff --git a/src/aggregation/bucket/range.rs b/src/aggregation/bucket/range.rs index c92f8c9a0..46df8a064 100644 --- a/src/aggregation/bucket/range.rs +++ b/src/aggregation/bucket/range.rs @@ -57,8 +57,7 @@ pub struct RangeAggregation { /// range. Extra buckets will be created until the first to, and last from, if necessary. pub ranges: Vec, /// Whether to return the buckets as a hash map - #[serde(skip_serializing_if = "Option::is_none")] - pub keyed: Option, + pub keyed: bool, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] @@ -467,7 +466,7 @@ mod tests { bucket_agg: BucketAggregationType::Range(RangeAggregation { field: "fraction_f64".to_string(), ranges: vec![(0f64..0.1f64).into(), (0.1f64..0.2f64).into()], - keyed: Some(true), + keyed: true, }), sub_aggregation: Default::default(), }), diff --git a/src/aggregation/intermediate_agg_result.rs b/src/aggregation/intermediate_agg_result.rs index 222225a88..f404f44d4 100644 --- a/src/aggregation/intermediate_agg_result.rs +++ b/src/aggregation/intermediate_agg_result.rs @@ -285,8 +285,7 @@ impl IntermediateBucketResult { let is_keyed = req .as_range() .expect("unexpected aggregation, expected range aggregation") - .keyed - .is_some(); + .keyed; let buckets = if is_keyed { let mut bucket_map = HashMap::new(); for bucket in buckets { @@ -306,7 +305,7 @@ impl IntermediateBucketResult { &req.sub_aggregation, )?; - let buckets = if req.as_histogram().unwrap().keyed.is_some() { + let buckets = if req.as_histogram().unwrap().keyed { let mut bucket_map = HashMap::new(); for bucket in buckets { bucket_map.insert(bucket.key.to_string(), bucket); diff --git a/src/aggregation/mod.rs b/src/aggregation/mod.rs index 658c9c41e..cca231802 100644 --- a/src/aggregation/mod.rs +++ b/src/aggregation/mod.rs @@ -503,13 +503,15 @@ mod tests { "bucketsL1": { "range": { "field": "score", - "ranges": [ { "to": 3.0f64 }, { "from": 3.0f64, "to": 70.0f64 }, { "from": 70.0f64 } ] + "ranges": [ { "to": 3.0f64 }, { "from": 3.0f64, "to": 70.0f64 }, { "from": 70.0f64 } ], + "keyed": false }, "aggs": { "bucketsL2": { "range": { "field": "score", - "ranges": [ { "to": 30.0f64 }, { "from": 30.0f64, "to": 70.0f64 }, { "from": 70.0f64 } ] + "ranges": [ { "to": 30.0f64 }, { "from": 30.0f64, "to": 70.0f64 }, { "from": 70.0f64 } ], + "keyed": false } } } @@ -519,12 +521,14 @@ mod tests { "field": "score", "interval": 70.0, "offset": 3.0, + "keyed": false }, "aggs": { "bucketsL2": { "histogram": { "field": "score", - "interval": 70.0 + "interval": 70.0, + "keyed": false } } } @@ -537,7 +541,8 @@ mod tests { "bucketsL2": { "histogram": { "field": "score", - "interval": 70.0 + "interval": 70.0, + "keyed": false } } } @@ -885,7 +890,8 @@ mod tests { { "from": 7.0, "to": 19.0 }, { "from": 19.0, "to": 20.0 }, { "from": 20.0 } - ] + ], + "keyed": false }, "aggs": { "average_in_range": { "avg": { "field": "score" } }, @@ -901,7 +907,8 @@ mod tests { { "from": 7.0, "to": 19.0 }, { "from": 19.0, "to": 20.0 }, { "from": 20.0 } - ] + ], + "keyed": false }, "aggs": { "average_in_range": { "avg": { "field": "score" } }, @@ -920,7 +927,8 @@ mod tests { { "from": 7.0, "to": 19.0 }, { "from": 19.0, "to": 20.0 }, { "from": 20.0 } - ] + ], + "keyed": false }, "aggs": { "average_in_range": { "avg": { "field": "score" } },