Kaynağa Gözat

优化count查询

zhouhao 5 yıl önce
ebeveyn
işleme
a51868cae8

+ 2 - 1
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/service/DefaultElasticSearchService.java

@@ -86,8 +86,9 @@ public class DefaultElasticSearchService implements ElasticSearchService {
 
     @Override
     public Mono<Long> count(String index, QueryParam queryParam) {
-        QueryParam param=queryParam.clone();
+        QueryParam param = queryParam.clone();
         param.setPaging(false);
+        param.setSorts(Collections.emptyList());
         return doCount(createCountRequest(param, index))
             .map(CountResponse::getCount)
             .defaultIfEmpty(0L)

+ 12 - 0
jetlinks-components/elasticsearch-component/src/main/java/org/jetlinks/community/elastic/search/timeseries/ElasticSearchTimeSeriesService.java

@@ -3,6 +3,7 @@ package org.jetlinks.community.elastic.search.timeseries;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.ezorm.core.param.QueryParam;
+import org.hswebframework.web.api.crud.entity.PagerResult;
 import org.jetlinks.community.elastic.search.service.AggregationService;
 import org.jetlinks.community.elastic.search.service.ElasticSearchService;
 import org.jetlinks.community.timeseries.TimeSeriesData;
@@ -14,6 +15,7 @@ import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 import java.util.Map;
+import java.util.function.Function;
 
 @AllArgsConstructor
 @Slf4j
@@ -49,6 +51,16 @@ public class ElasticSearchTimeSeriesService implements TimeSeriesService {
 
     }
 
+    @Override
+    public Mono<PagerResult<TimeSeriesData>> queryPager(QueryParam queryParam) {
+        return elasticSearchService.queryPager(index, queryParam, map -> TimeSeriesData.of((Long) map.get("timestamp"), map));
+    }
+
+    @Override
+    public <T> Mono<PagerResult<T>> queryPager(QueryParam queryParam, Function<TimeSeriesData, T> mapper) {
+        return elasticSearchService.queryPager(index, queryParam, map -> mapper.apply(TimeSeriesData.of((Long) map.get("timestamp"), map)));
+    }
+
 
     @Override
     public Mono<Void> save(Publisher<TimeSeriesData> data) {