From f77ea98fa0a50b69a04ba429e79e85401f12798f Mon Sep 17 00:00:00 2001 From: zhou-hao Date: Tue, 9 Jun 2020 18:48:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=81=9A=E5=90=88=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bucket/AggregationResponseHandle.java | 12 ++++++++++ .../search/aggreation/bucket/Bucket.java | 22 ++++++++----------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/AggregationResponseHandle.java b/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/AggregationResponseHandle.java index caacb2ef..15cb901b 100644 --- a/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/AggregationResponseHandle.java +++ b/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/AggregationResponseHandle.java @@ -9,6 +9,7 @@ import org.elasticsearch.search.aggregations.metrics.max.Max; import org.elasticsearch.search.aggregations.metrics.min.Min; import org.elasticsearch.search.aggregations.metrics.stats.Stats; import org.elasticsearch.search.aggregations.metrics.sum.Sum; +import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount; import org.jetlinks.community.elastic.search.aggreation.metrics.MetricsResponseSingleValue; import java.util.List; @@ -97,11 +98,22 @@ public class AggregationResponseHandle { bucket.setSum(sum(a)); } else if (a instanceof Stats) { stats(bucket, a); + } else if (a instanceof ValueCount) { + bucket.setValueCount(count(a)); } else { throw new UnsupportedOperationException("不支持的聚合类型"); } } + public static MetricsResponseSingleValue count(A a) { + ValueCount max = (ValueCount) a; + return MetricsResponseSingleValue.builder() + .value(max.getValue()) + .name(a.getName()) + .valueAsString(max.getValueAsString()) + .build(); + } + public static MetricsResponseSingleValue avg(A a) { Avg avg = (Avg) a; return MetricsResponseSingleValue.builder() diff --git a/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/Bucket.java b/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/Bucket.java index 56ce1def..a79e1b12 100644 --- a/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/Bucket.java +++ b/jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/aggreation/bucket/Bucket.java @@ -44,31 +44,27 @@ public class Bucket { private List buckets; + private double toNumber(double number) { + return (Double.isInfinite(number) || Double.isNaN(number)) ? 0 : number; + } + public Map toMap() { Map map = new HashMap<>(); if (this.sum != null) { - map.put(sum.getName(), sum.getValue()); + map.put(sum.getName(), toNumber(sum.getValue())); } if (this.valueCount != null) { - map.put(valueCount.getName(), valueCount.getValue()); + map.put(valueCount.getName(), toNumber(valueCount.getValue())); } if (this.avg != null) { - map.put(avg.getName(), avg.getValue()); + map.put(avg.getName(), toNumber(avg.getValue())); } if (this.min != null) { - map.put(min.getName(), min.getValue()); + map.put(min.getName(), toNumber(min.getValue())); } if (this.max != null) { - map.put(max.getName(), max.getValue()); + map.put(max.getName(), toNumber(max.getValue())); } -// -// if (this.getBuckets() != null) { -// bucketFlatMap(this.getBuckets(), map); -// } return map; } - -// private void bucketFlatMap(List buckets, Map map) { -// buckets.forEach(bucket -> map.putAll(bucket.toMap())); -// } }