Bläddra i källkod

es统计分析

zero 1 år sedan
förälder
incheckning
9b37c11196

+ 0 - 1
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/ChildAnalysisBuilder.java

@@ -35,7 +35,6 @@ public class ChildAnalysisBuilder implements IEsAnalysisBuilder {
             Query query = QueryBuilders.term(n -> n.field(field).value(fieldValue));
             queryList.add(query);
             Aggregation filters = AggregationBuilders.filters(n -> n.filters(m -> m.array(queryList)));
-//            Aggregation filters = AggregationBuilders.filter(n -> n.bool(k -> k.must(queryList)));
             Aggregation filterAgg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
                     .field("custom_field.field_value.raw").build())
                     .aggregations(new HashMap() {{

+ 138 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -0,0 +1,138 @@
+package cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory;
+
+import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
+import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
+import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
+import co.elastic.clients.elasticsearch._types.aggregations.ChildrenAggregation;
+import co.elastic.clients.elasticsearch._types.aggregations.TermsAggregation;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@Component
+public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
+    public String field = "";
+    public String valueOne = "";
+    public String valueTwo = "";
+    public Integer topN = 10;
+    public String path = "";
+    public Boolean ifHaveChild = false;
+    public String fieldType = null;
+    public String fieldId = null;
+    private String format;
+    public List<String> values = new ArrayList<>();
+
+    @Override
+    public Aggregation createCountAnalyseAgg() throws Exception {
+        Aggregation aggregation = null;
+
+        return aggregation;
+    }
+
+    @Override
+    public String getField() {
+        return field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValueOne() {
+        return valueOne;
+    }
+
+    @Override
+    public void setValueOne(String valueOne) {
+        this.valueOne = valueOne;
+    }
+
+    @Override
+    public String getValueTwo() {
+        return valueTwo;
+    }
+
+    @Override
+    public void setValueTwo(String valueTwo) {
+        this.valueTwo = valueTwo;
+    }
+
+    @Override
+    public Integer getTopN() {
+        return topN;
+    }
+
+    @Override
+    public void setTopN(Integer topN) {
+        this.topN = topN;
+    }
+
+    @Override
+    public String getPath() {
+        return path;
+    }
+
+    @Override
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Boolean getIfHaveChild() {
+        return ifHaveChild;
+    }
+
+    @Override
+    public void setIfHaveChild(Boolean ifHaveChild) {
+        this.ifHaveChild = ifHaveChild;
+    }
+
+    @Override
+    public String getFieldType() {
+        return fieldType;
+    }
+
+    @Override
+    public void setFieldType(String fieldType) {
+        this.fieldType = fieldType;
+    }
+
+    @Override
+    public String getFieldId() {
+        return fieldId;
+    }
+
+    @Override
+    public void setFieldId(String fieldId) {
+        this.fieldId = fieldId;
+    }
+
+    @Override
+    public String getFormat() {
+        return format;
+    }
+
+    @Override
+    public void setFormat(String format) {
+        this.format = format;
+    }
+
+    @Override
+    public List<String> getValues() {
+        return values;
+    }
+
+    @Override
+    public void setValues(List<String> values) {
+        this.values = values;
+    }
+}

+ 2 - 1
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/DateCountAnalyssBuilder.java

@@ -31,7 +31,8 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation aggregation = null;
         if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
-            Query query = QueryBuilders.range(j -> j.field(field).from(valueOne).to(valueTwo).format("yyyy"));
+            String end = String.valueOf(Integer.parseInt(valueTwo) + 1);
+            Query query = QueryBuilders.range(j -> j.field(field).from(valueOne).to(end).format("yyyy"));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
             aggregation = new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder()
                     .field(field).format("yyyy")

+ 29 - 23
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -463,14 +463,6 @@ public class EsCountService {
      */
     public void getTermCountDTOS(Aggregate agg, String field, List<EsCountDetailDTO> detailDTOS) {
         List<StringTermsBucket> list = agg.sterms().buckets().array();
-        Long otherDocCount = agg.sterms().sumOtherDocCount();
-        if (otherDocCount > 0) {
-            EsCountDetailDTO dto = new EsCountDetailDTO();
-            dto.setField(field);
-            dto.setName("未知");
-            dto.setNumber(otherDocCount);
-            detailDTOS.add(dto);
-        }
         list.forEach(bucket -> {
             EsCountDetailDTO dto = new EsCountDetailDTO();
             dto.setField(field);
@@ -637,14 +629,6 @@ public class EsCountService {
      */
     public void getNestedCountDTOS(Aggregate agg, String field, List<EsCountDetailDTO> detailDTOS) {
         Aggregate termsAgg = agg.nested().aggregations().get("terms_agg");
-        Long otherDocCount = termsAgg.sterms().sumOtherDocCount();
-        if (otherDocCount > 0) {
-            EsCountDetailDTO dto = new EsCountDetailDTO();
-            dto.setField(field);
-            dto.setName("未知");
-            dto.setNumber(otherDocCount);
-            detailDTOS.add(dto);
-        }
         List<StringTermsBucket> list = termsAgg.sterms().buckets().array();
         list.forEach(bucket -> {
             EsCountDetailDTO dto = new EsCountDetailDTO();
@@ -722,7 +706,7 @@ public class EsCountService {
             Aggregation aggregation = null;
             if (esConfigVO != null) {
                 iEsCountAnalysisBuilder = esCountAnalysisBuilderFactory.getClass(esConfigVO.getEsClass());
-                iEsCountAnalysisBuilder.setField(field);
+                iEsCountAnalysisBuilder.setField(esConfigVO.getEsField());
                 iEsCountAnalysisBuilder.setValueOne(valueOne);
                 iEsCountAnalysisBuilder.setValueTwo(valueTwo);
                 iEsCountAnalysisBuilder.setValues(values);
@@ -764,11 +748,19 @@ public class EsCountService {
                 if (StringUtils.isNotEmpty(field)) {
                     List<FiltersBucket> filtersBuckets = agg.filters().buckets().array();
                     if (dateList.contains(field)) {
-                        filtersBuckets.forEach(filtersBucket -> {
-                            this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
-                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                            this.getDateCountDTOS(filtersAgg, field, topN, detailDTOS);
-                        });
+                        if (CollectionUtils.isEmpty(values)) {
+                            filtersBuckets.forEach(filtersBucket -> {
+                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getDateCountDTOS(filtersAgg, field, topN, detailDTOS);
+                            });
+                        } else {
+                            filtersBuckets.forEach(filtersBucket -> {
+                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getDateAnalysisDTOS(filtersAgg, field, topN, detailDTOS);
+                            });
+                        }
                     } else if (nestedList.contains(field)) {
                         filtersBuckets.forEach(filtersBucket -> {
                             this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
@@ -781,6 +773,16 @@ public class EsCountService {
                             Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
                             this.getChildCountDTOS(filtersAgg, field, detailDTOS);
                         });
+                    } else if (numberList.contains(field)) {
+                        if (CollectionUtils.isEmpty(values)) {
+
+                        } else {
+                            filtersBuckets.forEach(filtersBucket -> {
+                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getNumberAnalysisDTOS(filtersAgg, field, detailDTOS);
+                            });
+                        }
                     } else {
                         filtersBuckets.forEach(filtersBucket -> {
                             this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
@@ -793,7 +795,11 @@ public class EsCountService {
                 }
             } else {
                 if (dateList.contains(field)) {
-                    this.getDateAnalysisDTOS(agg, field, topN, detailDTOS);
+                    if (CollectionUtils.isEmpty(values)) {
+                        this.getDateCountDTOS(agg, field, topN, detailDTOS);
+                    } else {
+                        this.getDateAnalysisDTOS(agg, field, topN, detailDTOS);
+                    }
                 } else if (nestedList.contains(field)) {
                     this.getNestedCountDTOS(agg, field, detailDTOS);
                 } else if (childList.contains(field)) {