Parcourir la source

es统计分析

zero il y a 1 an
Parent
commit
df35e4ca15
22 fichiers modifiés avec 206 ajouts et 3022 suppressions
  1. 0 21
      src/main/java/cn/cslg/pas/controller/PatentController.java
  2. 0 116
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/ChildAnalysisBuilder.java
  3. 0 218
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/DateAnalysisBuilder.java
  4. 0 19
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/EsAnalysisBuilderFactory.java
  5. 0 41
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/IEsAnalysisBuilder.java
  6. 0 110
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/NestedAnalysisBuilder.java
  7. 0 103
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/RangeAnalysisBuilder.java
  8. 0 93
      src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/TermsAnalysisBuilder.java
  9. 23 7
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java
  10. 7 2
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/DateCountAnalyssBuilder.java
  11. 0 171
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/ChildCountBuilder.java
  12. 0 108
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/DateHistogramBuilder.java
  13. 0 19
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/EsCountBuilderFactory.java
  14. 0 108
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/FilterCountBuilder.java
  15. 0 50
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/IEsCountBuilder.java
  16. 0 126
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/NestedCountBuilder.java
  17. 0 91
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/RangeCountBuilder.java
  18. 0 121
      src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/TermsCountBuilder.java
  19. 172 506
      src/main/java/cn/cslg/pas/service/business/es/EsCountService.java
  20. 4 4
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  21. 0 602
      src/main/resources/jsons/esAnalysis.json
  22. 0 386
      src/main/resources/jsons/esCount.json

+ 0 - 21
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -75,27 +75,6 @@ public class PatentController {
         return Response.success(records);
     }
 
-    @Operation(summary = "专利的聚合统计")
-    @PostMapping("/esCountSearch")
-    public Response esCountSearch(@RequestBody EsAllCountVO countVO) throws Exception {
-        EsCountDTO dto = esCountService.esCountSearch(countVO);
-        return Response.success(dto);
-    }
-
-    @Operation(summary = "专利的聚合分析")
-    @PostMapping("/esAnalysisSearch")
-    public Response esCount(@RequestBody EsAllCountVO countVO) throws Exception {
-        EsCountDTO patentDTO = esCountService.esAnalysisSearch(countVO);
-        return Response.success(patentDTO);
-    }
-
-    @Operation(summary = "esAnalysis")
-    @PostMapping("/esAnalysis")
-    public Response esAnalysis(@RequestBody EsAllCountVO countVO) throws Exception {
-        EsCountDTO dto = esCountService.esAnalysis(countVO);
-        return Response.success(dto);
-    }
-
     @Operation(summary = "聚合统计")
     @PostMapping("/esCountAnalysis")
     public Response esCountAnalysis(@RequestBody EsAllCountVO countVO) throws Exception {

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

@@ -1,116 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-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 org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-@Component
-public class ChildAnalysisBuilder implements IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-
-    @Override
-    public Aggregation createAnalyseAgg() {
-        Aggregation aggregation = null;
-        if (!CollectionUtils.isEmpty(values)){
-            List<Query> queryList = new ArrayList<>();
-            for (String value : values) {
-                Query q = QueryBuilders.term(i -> i.field("custom_field.field_value.raw").value(value));
-                queryList.add(q);
-            }
-            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 filterAgg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field("custom_field.field_value.raw").build())
-                    .aggregations(new HashMap() {{
-                        put("filterAgg", filters);
-                    }}).build();
-
-            Aggregation Agg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).build())
-                    .aggregations(new HashMap() {{
-                        put("term_agg", filterAgg);
-                    }}).build();
-
-            aggregation = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
-                    .type("project_customfield").build()).aggregations(new HashMap() {{
-                put("child_agg", Agg);
-            }}).build();
-        }
-
-        return aggregation;
-    }
-
-    @Override
-    public String getField() {
-        return field;
-    }
-
-    @Override
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    public String getFieldValue() {
-        return fieldValue;
-    }
-
-    public void setFieldValue(String fieldValue) {
-        this.fieldValue = fieldValue;
-    }
-
-    @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 List<String> getValues() {
-        return values;
-    }
-
-    @Override
-    public void setValues(List<String> values) {
-        this.values = values;
-    }
-}

+ 0 - 218
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/DateAnalysisBuilder.java

@@ -1,218 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.*;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-@Component
-public class DateAnalysisBuilder implements IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-    public static final int YEAR = 4;
-    public static final int YEARRANGE = 9;
-    public static final int MONTH = 7;
-    public static final int DAYONE = 8;
-    public static final int DAY = 10;
-
-    @Override
-    public Aggregation createAnalyseAgg() throws ParseException {
-        Aggregation aggregation = null;
-        List<DateRangeExpression> rangeExpressions = new ArrayList<>();
-
-        if (!CollectionUtils.isEmpty(values)) {
-            Calendar calendar = Calendar.getInstance();
-            for (String value : values) {
-                if (value.length() == YEAR) {
-                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                    String startYear = value + "-01";
-                    Date year = format.parse(startYear);
-                    calendar.setTime(year);
-                    calendar.add(Calendar.YEAR, 1);
-                    Date yearDate = calendar.getTime();
-                    String nextYear = format.format(yearDate);
-                    FieldDateMath st = FieldDateMath.of(i -> i.expr(startYear));
-                    FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextYear));
-                    DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                    rangeExpressions.add(expression);
-                } else if (value.length() == MONTH && !value.contains("Q")
-                        && !value.contains("H")) {
-                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                    Date month = format.parse(value);
-                    calendar.setTime(month);
-                    calendar.add(Calendar.MONTH, 1);
-                    Date monthDate = calendar.getTime();
-                    String nextMonth = format.format(monthDate);
-                    FieldDateMath st = FieldDateMath.of(i -> i.expr(value));
-                    FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextMonth));
-                    DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                    rangeExpressions.add(expression);
-                } else if (value.length() == MONTH && value.contains("Q")) {
-                    if (value.contains("Q1")) {
-                        String firstQuarter = value.substring(0, value.indexOf("-"));
-                        String firstQuarterDate = firstQuarter + "-01";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date quarter = format.parse(firstQuarterDate);
-                        calendar.setTime(quarter);
-                        calendar.add(Calendar.MONTH, 3);
-                        Date quarterDate = calendar.getTime();
-                        String nextQuarterDate = format.format(quarterDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(firstQuarterDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextQuarterDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    } else if (value.contains("Q2")) {
-                        String secondQuarter = value.substring(0, value.indexOf("-"));
-                        String secondQuarterDate = secondQuarter + "-04";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date quarter = format.parse(secondQuarterDate);
-                        calendar.setTime(quarter);
-                        calendar.add(Calendar.MONTH, 3);
-                        Date quarterDate = calendar.getTime();
-                        String nextQuarterDate = format.format(quarterDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(secondQuarterDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextQuarterDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    } else if (value.contains("Q3")) {
-                        String thirdQuarter = value.substring(0, value.indexOf("-"));
-                        String thirdQuarterDate = thirdQuarter + "-07";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date quarter = format.parse(thirdQuarterDate);
-                        calendar.setTime(quarter);
-                        calendar.add(Calendar.MONTH, 3);
-                        Date quarterDate = calendar.getTime();
-                        String nextQuarterDate = format.format(quarterDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(thirdQuarterDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextQuarterDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    } else if (value.contains("Q4")) {
-                        String fourthQuarter = value.substring(0, value.indexOf("-"));
-                        String fourthQuarterDate = fourthQuarter + "-10";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date quarter = format.parse(fourthQuarterDate);
-                        calendar.setTime(quarter);
-                        calendar.add(Calendar.MONTH, 3);
-                        Date quarterDate = calendar.getTime();
-                        String nextQuarterDate = format.format(quarterDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(fourthQuarterDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextQuarterDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    }
-                } else if (value.length() == MONTH && value.contains("H")) {
-                    if (value.contains("H1")) {
-                        String firstHalfYear = value.substring(0, value.indexOf("-"));
-                        String firstHalfYearDate = firstHalfYear + "-01";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date halfYear = format.parse(firstHalfYearDate);
-                        calendar.setTime(halfYear);
-                        calendar.add(Calendar.MONTH, 6);
-                        Date halfYearDate = calendar.getTime();
-                        String nextHalfYearDate = format.format(halfYearDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(firstHalfYearDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextHalfYearDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    } else if (value.contains("H2")) {
-                        String secondHalfYear = value.substring(0, value.indexOf("-"));
-                        String secondHalfYearDate = secondHalfYear + "-07";
-                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-                        Date halfYear = format.parse(secondHalfYearDate);
-                        calendar.setTime(halfYear);
-                        calendar.add(Calendar.MONTH, 6);
-                        Date halfYearDate = calendar.getTime();
-                        String nextHalfYearDate = format.format(halfYearDate);
-                        FieldDateMath st = FieldDateMath.of(i -> i.expr(secondHalfYearDate));
-                        FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextHalfYearDate));
-                        DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                        rangeExpressions.add(expression);
-                    }
-                } else {
-                    String start = value.substring(0, value.indexOf("-")) + "-01";
-                    String end = value.substring(value.indexOf("-") + 1);
-                    String nextYear = String.valueOf(Integer.parseInt(end) + 1) + "-01";
-                    FieldDateMath st = FieldDateMath.of(i -> i.expr(start));
-                    FieldDateMath ed = FieldDateMath.of(i -> i.expr(nextYear));
-                    DateRangeExpression expression = DateRangeExpression.of(i -> i.from(st).to(ed).key(value));
-                    rangeExpressions.add(expression);
-
-                }
-            }
-        }
-        aggregation = AggregationBuilders.dateRange(i -> i.field(field).format("yyyy-MM").ranges(rangeExpressions));
-
-        return aggregation;
-    }
-
-    @Override
-    public String getField() {
-        return field;
-    }
-
-    @Override
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    @Override
-    public String getFieldValue() {
-        return fieldValue;
-    }
-
-    @Override
-    public void setFieldValue(String fieldValue) {
-        this.fieldValue = fieldValue;
-    }
-
-    @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 List<String> getValues() {
-        return values;
-    }
-
-    @Override
-    public void setValues(List<String> values) {
-        this.values = values;
-    }
-}

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

@@ -1,19 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-@Component
-public class EsAnalysisBuilderFactory {
-
-    @Autowired
-    private Map<String, IEsAnalysisBuilder> iEsAnalysisBuilderMap;
-
-
-    public IEsAnalysisBuilder getClass(String builderName) {
-        IEsAnalysisBuilder bean1 = iEsAnalysisBuilderMap.get(builderName);
-        return bean1;
-    }
-}

+ 0 - 41
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/IEsAnalysisBuilder.java

@@ -1,41 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public interface IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-
-    public Aggregation createAnalyseAgg() throws Exception;
-
-    public String getField();
-
-    public void setField(String field);
-
-    public String getFieldValue();
-
-    public void setFieldValue(String fieldValue);
-
-    public Integer getTopN();
-
-    public void setTopN(Integer topN);
-
-    public String getPath();
-
-    public void setPath(String path);
-
-    public Boolean getIfHaveChild();
-
-    public void setIfHaveChild(Boolean ifHaveChild);
-
-    public List<String> getValues();
-
-    public void setValues(List<String> values);
-}

+ 0 - 110
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/NestedAnalysisBuilder.java

@@ -1,110 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
-import co.elastic.clients.elasticsearch._types.aggregations.NestedAggregation;
-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 org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-@Component
-public class NestedAnalysisBuilder implements IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-
-    @Override
-    public Aggregation createAnalyseAgg() {
-        Aggregation aggregation = null;
-        if (!CollectionUtils.isEmpty(values)) {
-            List<Query> queryList = new ArrayList<>();
-            for (String value : values) {
-                Query q = QueryBuilders.term(i -> i.field(field).value(value));
-                queryList.add(q);
-            }
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.should(queryList)));
-            Aggregation finalTerms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
-                    .aggregations(new HashMap() {{
-                        put("filter_agg", filter);
-                    }}).build();
-            aggregation = new Aggregation.Builder().nested(new NestedAggregation.Builder().
-                    path(path).build())
-                    .aggregations(new HashMap() {{
-                        put("terms_agg", finalTerms);
-                    }}).build();
-        }
-
-        return aggregation;
-    }
-
-    @Override
-    public String getField() {
-        return field;
-    }
-
-    @Override
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    @Override
-    public String getFieldValue() {
-        return fieldValue;
-    }
-
-    @Override
-    public void setFieldValue(String fieldValue) {
-        this.fieldValue = fieldValue;
-    }
-
-    @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 List<String> getValues() {
-        return values;
-    }
-
-    @Override
-    public void setValues(List<String> values) {
-        this.values = values;
-    }
-}

+ 0 - 103
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/RangeAnalysisBuilder.java

@@ -1,103 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.*;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Component
-public class RangeAnalysisBuilder implements IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-
-    @Override
-    public Aggregation createAnalyseAgg() {
-        List<AggregationRange> ranges = new ArrayList<>();
-        Aggregation aggregation = null;
-            for (String value : values) {
-                if (value.contains("-")) {
-                    String start = value.substring(0, value.indexOf("-"));
-                    String end = value.substring(value.indexOf("-") + 1);
-                    end = String.valueOf(Integer.parseInt(end) + 1);
-                    String finalEnd = end;
-                    AggregationRange range = AggregationRange.of(i -> i.from(start).to(finalEnd).key(value));
-                    ranges.add(range);
-                } else if (value.contains("以上")) {
-                    String start = value.substring(0, value.indexOf("以上"));
-                    AggregationRange range = AggregationRange.of(i -> i.from(start).key(value));
-                    ranges.add(range);
-                } else {
-                    String end = String.valueOf(Integer.parseInt(value) + 1);
-                    AggregationRange range = AggregationRange.of(i -> i.from(value).to(end).key(value));
-                    ranges.add(range);
-                }
-            }
-        aggregation = AggregationBuilders.range(i -> i.field(field).ranges(ranges));
-        return aggregation;
-    }
-
-    @Override
-    public String getField() {
-        return field;
-    }
-
-    @Override
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    @Override
-    public String getFieldValue() {
-        return fieldValue;
-    }
-
-    @Override
-    public void setFieldValue(String fieldValue) {
-        this.fieldValue = fieldValue;
-    }
-
-    @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 List<String> getValues() {
-        return values;
-    }
-
-    @Override
-    public void setValues(List<String> values) {
-        this.values = values;
-    }
-}

+ 0 - 93
src/main/java/cn/cslg/pas/factorys/EsAnalysisBuilderFactory/TermsAnalysisBuilder.java

@@ -1,93 +0,0 @@
-package cn.cslg.pas.factorys.EsAnalysisBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
-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 org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-@Component
-public class TermsAnalysisBuilder implements IEsAnalysisBuilder {
-    public String field = "";
-    public String fieldValue = "";
-    public Integer topN = 10;
-    public String path = "";
-    public Boolean ifHaveChild = false;
-    public List<String> values = new ArrayList<>();
-
-    @Override
-    public Aggregation createAnalyseAgg() {
-        Aggregation aggregation = null;
-        if (!CollectionUtils.isEmpty(values)) {
-
-            List<Query> queryList = new ArrayList<>();
-            for (String value : values) {
-                Query q = QueryBuilders.term(i -> i.field(field).value(value));
-                queryList.add(q);
-            }
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.should(queryList)));
-//            Aggregation filter = AggregationBuilders.filter(n -> n.term(m -> m.field(field).value(fieldValue)));
-            aggregation = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
-                    .aggregations(new HashMap() {{
-                        put("filter_agg", filter);
-                    }}).build();
-        }
-        return aggregation;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    public String getFieldValue() {
-        return fieldValue;
-    }
-
-    public void setFieldValue(String fieldValue) {
-        this.fieldValue = fieldValue;
-    }
-
-    public Integer getTopN() {
-        return topN;
-    }
-
-    public void setTopN(Integer topN) {
-        this.topN = topN;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public Boolean getIfHaveChild() {
-        return ifHaveChild;
-    }
-
-    public void setIfHaveChild(Boolean ifHaveChild) {
-        this.ifHaveChild = ifHaveChild;
-    }
-
-    public List<String> getValues() {
-        return values;
-    }
-
-    public void setValues(List<String> values) {
-        this.values = values;
-    }
-}

+ 23 - 7
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory;
 
-import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
@@ -38,12 +37,29 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
         Aggregation termAgg = null;
         if (ifHaveChild) {
 
-            Aggregation filterAgg = AggregationBuilders.filter(n -> n.bool(k -> k.must(queryList)));
-            termAgg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field("custom_field.stats_value.raw").build())
-                    .aggregations(new HashMap() {{
-                        put("filterAgg", filterAgg);
-                    }}).build();
+            if (!CollectionUtils.isEmpty(values)) {
+                termAgg = AggregationBuilders.terms(i -> i.field(field).include(j -> j.terms(values)).size(topN));
+            } else {
+                if (StringUtils.isNotEmpty(valueOne) && StringUtils.isEmpty(valueTwo)) {
+                    String str = "*";
+                    String s = str.concat(valueOne).concat("*");
+                    Query query = QueryBuilders.wildcard(i -> i.field("custom_field.stats_value.raw").value(s));
+                    queryList.add(query);
+                } else if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
+                    //日期/数字
+                    String start = valueOne.substring(0, valueOne.indexOf("-"));
+                    String end = valueOne.substring(valueOne.indexOf("-") + 1);
+                    Query query = QueryBuilders.range(range -> range.field("custom_field.stats_value.raw")
+                            .gte(JsonData.of(start)).lte(JsonData.of(end)));
+                    queryList.add(query);
+                }
+                Aggregation filterAgg = AggregationBuilders.filter(n -> n.bool(k -> k.must(queryList)));
+                termAgg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
+                        .field("custom_field.stats_value.raw").build())
+                        .aggregations(new HashMap() {{
+                            put("filterAgg", filterAgg);
+                        }}).build();
+            }
         } else {
             if (!CollectionUtils.isEmpty(values)) {
                 termAgg = AggregationBuilders.terms(i -> i.field(field).include(j -> j.terms(values)).size(topN));

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

@@ -1,6 +1,5 @@
 package cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory;
 
-import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
@@ -165,7 +164,13 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
             if (format.equals("年")) {
                 aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year));
             } else if (format.equals("半年")) {
-                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Year));
+                Aggregation halfYearAgg = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Month));
+                aggregation = new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder()
+                        .field(field).format("yyyy")
+                        .calendarInterval(CalendarInterval.Year).build())
+                        .aggregations(new HashMap() {{
+                            put("halfYearAgg", halfYearAgg);
+                        }}).build();
             } else if (format.equals("季")) {
                 aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Quarter));
             } else if (format.equals("月")) {

+ 0 - 171
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/ChildCountBuilder.java

@@ -1,171 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.*;
-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.text.SimpleDateFormat;
-import java.util.*;
-
-@Component
-public class ChildCountBuilder implements IEsCountBuilder{
-    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;
-
-    @Override
-    public Aggregation createAggregation() throws ParseException {
-        Aggregation terms = null;
-        if (ifHaveChild) {
-            Aggregation agg = null;
-            List<Query> queryList = new ArrayList<>();
-            if (StringUtils.isNotEmpty(valueOne) && StringUtils.isEmpty(valueTwo)) {
-                String str = "*";
-                String s = str.concat(valueOne).concat("*");
-                Query query = QueryBuilders.wildcard(i -> i.field("custom_field.field_value.raw").value(s));
-                queryList.add(query);
-            } else if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
-                String start = valueOne.substring(0, valueOne.indexOf("-"));
-                String end = valueOne.substring(valueOne.indexOf("-") + 1);
-                Query query = QueryBuilders.range(range -> range.field("custom_field.field_value.raw")
-                        .gte(JsonData.of(start)).lte(JsonData.of(end)));
-                queryList.add(query);
-            }
-            terms = this.getAggregation(queryList);
-
-        } else {
-            Aggregation agg = null;
-            List<Query> queryList = new ArrayList<>();
-            if (StringUtils.isNotEmpty(valueOne) && StringUtils.isEmpty(valueTwo)) {
-                String str = "*";
-                String s = str.concat(valueOne).concat("*");
-                Query query = QueryBuilders.wildcard(i -> i.field("custom_field.field_value.raw").value(s));
-                queryList.add(query);
-            } else if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
-                String start = valueOne.substring(0, valueOne.indexOf("-"));
-                String end = valueOne.substring(valueOne.indexOf("-") + 1);
-                Query query = QueryBuilders.range(range -> range.field("custom_field.field_value.raw")
-                        .gte(JsonData.of(start)).lte(JsonData.of(end)));
-                queryList.add(query);
-            }
-            terms = this.getAggregation(queryList);
-        }
-
-        Aggregation finalTerms = terms;
-        Aggregation aggregation = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
-                .type("project_customfield").build()).aggregations(new HashMap() {{
-            put("child_agg", finalTerms);
-        }}).build();
-        return aggregation;
-    }
-
-    /**
-     * 通用获取Aggregation
-     * @param queryList
-     * @return
-     */
-    private Aggregation getAggregation(List<Query> queryList) {
-        Query q1 = QueryBuilders.term(i -> i.field("custom_field.field").value(fieldId));
-        Query q2 = QueryBuilders.term(i -> i.field("custom_field.field_type").value(fieldType));
-        queryList.add(q1);
-        queryList.add(q2);
-
-        Aggregation filtersAgg = AggregationBuilders.filter(n -> n.bool(k -> k.must(queryList)));
-
-        Aggregation termAgg = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                .field("custom_field.field_value.raw").build())
-                .aggregations(new HashMap() {{
-                    put("filterAgg", filtersAgg);
-                }}).build();
-
-        Aggregation terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                .field(field).size(topN).build())
-                .aggregations(new HashMap() {{
-                    put("filter_agg", termAgg);
-                }}).build();
-        return terms;
-    }
-
-    @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;
-    }
-
-    public Boolean getIfHaveChild() {
-        return ifHaveChild;
-    }
-
-    public void setIfHaveChild(Boolean ifHaveChild) {
-        this.ifHaveChild = ifHaveChild;
-    }
-
-    public String getFieldType() {
-        return fieldType;
-    }
-
-    public void setFieldType(String fieldType) {
-        this.fieldType = fieldType;
-    }
-
-    public String getFieldId() {
-        return fieldId;
-    }
-
-    public void setFieldId(String fieldId) {
-        this.fieldId = fieldId;
-    }
-}

+ 0 - 108
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/DateHistogramBuilder.java

@@ -1,108 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.SortOrder;
-import co.elastic.clients.elasticsearch._types.aggregations.*;
-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 co.elastic.clients.util.NamedValue;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-
-@Component
-public class DateHistogramBuilder implements IEsCountBuilder{
-    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;
-
-    @Override
-    public Aggregation createAggregation() {
-        Aggregation aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year));
-        if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
-            Query query = QueryBuilders.range(j -> j.field(field).from(valueOne).to(valueTwo).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")
-                    .calendarInterval(CalendarInterval.Year).build())
-                    .aggregations(new HashMap() {{
-                        put("filter_agg", filter);
-                    }}).build();
-        }
-        return aggregation;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    public String getValueOne() {
-        return valueOne;
-    }
-
-    public void setValueOne(String valueOne) {
-        this.valueOne = valueOne;
-    }
-
-    public String getValueTwo() {
-        return valueTwo;
-    }
-
-    public void setValueTwo(String valueTwo) {
-        this.valueTwo = valueTwo;
-    }
-
-    public Integer getTopN() {
-        return topN;
-    }
-
-    public void setTopN(Integer topN) {
-        this.topN = topN;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public Boolean getIfHaveChild() {
-        return ifHaveChild;
-    }
-
-    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;
-    }
-}

+ 0 - 19
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/EsCountBuilderFactory.java

@@ -1,19 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-@Component
-public class EsCountBuilderFactory {
-
-    @Autowired
-    private Map<String, IEsCountBuilder> iEsCountBuilderMap;
-
-
-    public IEsCountBuilder getClass(String builderName) {
-        IEsCountBuilder bean1 = iEsCountBuilderMap.get(builderName);
-        return bean1;
-    }
-}

+ 0 - 108
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/FilterCountBuilder.java

@@ -1,108 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
-
-public class FilterCountBuilder implements IEsCountBuilder{
-    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;
-
-
-    @Override
-    public Aggregation createAggregation() {
-        String str = "*";
-        String s = str.concat(valueOne).concat("*");
-        Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
-        AggregationBuilders.filter(n -> n.term(m -> m.field(field).value(valueOne)));
-//        AggregationBuilders.filters(n -> n.filters(m -> m.array()));
-        return AggregationBuilders.filter(i -> i.bool(j -> j.must(query)));
-    }
-
-    @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;
-    }
-}

+ 0 - 50
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/IEsCountBuilder.java

@@ -1,50 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-
-import java.text.ParseException;
-
-public interface IEsCountBuilder {
-    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;
-
-    public Aggregation createAggregation() throws Exception;
-
-    public String getField();
-
-    public void setField(String field);
-
-    public String getValueOne();
-
-    public void setValueOne(String valueOne);
-
-    public String getValueTwo();
-
-    public void setValueTwo(String valueTwo);
-
-    public Integer getTopN();
-
-    public void setTopN(Integer topN);
-
-    public String getPath();
-
-    public void setPath(String path);
-
-    public Boolean getIfHaveChild();
-
-    public void setIfHaveChild(Boolean ifHaveChild);
-
-    public String getFieldType();
-
-    public void setFieldType(String fieldType);
-
-    public String getFieldId();
-
-    public void setFieldId(String fieldId);
-}

+ 0 - 126
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/NestedCountBuilder.java

@@ -1,126 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.*;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Component
-public class NestedCountBuilder implements IEsCountBuilder {
-    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;
-
-    @Override
-    public Aggregation createAggregation() {
-        Aggregation terms = AggregationBuilders.terms(j -> j.field(field).size(topN));
-        if (StringUtils.isNotEmpty(valueOne)) {
-            String str = "*";
-            String s = str.concat(valueOne).concat("*");
-            Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
-//            Query query = QueryBuilders.term(j -> j.field(field).value(valueOne));
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
-            terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
-                    .aggregations(new HashMap() {{
-                        put("filter_agg", filter);
-                    }}).build();
-        }
-        Aggregation finalTerms = terms;
-        Aggregation aggregation = new Aggregation.Builder().nested(new NestedAggregation.Builder().
-                path(path).build())
-                .aggregations(new HashMap() {{
-                    put("terms_agg", finalTerms);
-                }}).build();
-        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;
-    }
-}

+ 0 - 91
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/RangeCountBuilder.java

@@ -1,91 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import org.springframework.stereotype.Component;
-
-@Component
-public class RangeCountBuilder implements IEsCountBuilder{
-    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;
-
-    @Override
-    public Aggregation createAggregation() {
-        return null;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    public String getValueOne() {
-        return valueOne;
-    }
-
-    public void setValueOne(String valueOne) {
-        this.valueOne = valueOne;
-    }
-
-    public String getValueTwo() {
-        return valueTwo;
-    }
-
-    public void setValueTwo(String valueTwo) {
-        this.valueTwo = valueTwo;
-    }
-
-    public Integer getTopN() {
-        return topN;
-    }
-
-    public void setTopN(Integer topN) {
-        this.topN = topN;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    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;
-    }
-}

+ 0 - 121
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/TermsCountBuilder.java

@@ -1,121 +0,0 @@
-package cn.cslg.pas.factorys.EsCountBuilderFactory;
-
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
-import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
-import co.elastic.clients.elasticsearch._types.aggregations.NestedAggregation;
-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 org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-
-@Component
-public class TermsCountBuilder implements IEsCountBuilder{
-    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;
-
-    @Override
-    public Aggregation createAggregation() {
-        Aggregation aggregation = AggregationBuilders.terms(i -> i.field(field).size(topN));
-        if (StringUtils.isNotEmpty(valueOne)) {
-            String str = "*";
-            String s = str.concat(valueOne).concat("*");
-            Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
-            aggregation = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
-                    .aggregations(new HashMap() {{
-                        put("filter_agg", filter);
-                    }}).build();
-        }
-        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;
-    }
-}

+ 172 - 506
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -3,8 +3,6 @@ package cn.cslg.pas.service.business.es;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.EsCountDetailDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
-import cn.cslg.pas.common.model.request.MapRequest;
-import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
@@ -12,19 +10,13 @@ import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.business.EsAllCountVO;
 import cn.cslg.pas.common.vo.business.EsCountVO;
 import cn.cslg.pas.domain.es.Patent;
-import cn.cslg.pas.factorys.EsAnalysisBuilderFactory.EsAnalysisBuilderFactory;
-import cn.cslg.pas.factorys.EsAnalysisBuilderFactory.IEsAnalysisBuilder;
 import cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory.EsCountAnalysisBuilderFactory;
 import cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory.IEsCountAnalysisBuilder;
-import cn.cslg.pas.factorys.EsCountBuilderFactory.EsCountBuilderFactory;
-import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.query.FormatQueryService;
-import cn.hutool.json.JSONUtil;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import com.alibaba.fastjson.JSON;
@@ -35,6 +27,8 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,11 +44,6 @@ public class EsCountService {
 
 
     private final ElasticsearchClient client;
-
-    @Autowired
-    private EsCountBuilderFactory esCountBuilderFactory;
-    @Autowired
-    private EsAnalysisBuilderFactory esAnalysisBuilderFactory;
     @Autowired
     private EsCountAnalysisBuilderFactory esCountAnalysisBuilderFactory;
     @Autowired
@@ -63,20 +52,19 @@ public class EsCountService {
     private EsService esService;
 
     /**
-     * 查询专利库中的专利分组聚合统计
-     *
-     * @param countVO
+     * 聚合统计
+     * @param vo
      * @return
      * @throws Exception
      */
-    public EsCountDTO esCountSearch(EsAllCountVO countVO) throws Exception {
-        String searchCondition = countVO.getCondition();
-        List<EsCustomFieldValueDTO> customFields = countVO.getCustomFields();
+    public EsCountDTO esCountAnalysis(EsAllCountVO vo) throws Exception {
+        String searchCondition = vo.getCondition();
+        List<EsCustomFieldValueDTO> customFields = vo.getCustomFields();
         if (!CollectionUtils.isEmpty(customFields)) {
             searchCondition = esService.parseCustomField(customFields);
         }
-        Integer taskId = countVO.getTaskId();
-        Integer projectId = countVO.getProjectId();
+        Integer taskId = vo.getTaskId();
+        Integer projectId = vo.getProjectId();
         if (taskId != null) {
             if (searchCondition != null && !"".equals(searchCondition.trim())) {
                 searchCondition = "taskId = " + taskId + " AND " + searchCondition;
@@ -95,6 +83,8 @@ public class EsCountService {
 
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
+        builder.index("patent");
+        //设置查询索引
         Query query = null;
         if (StringUtils.isNotEmpty(searchCondition)) {
             //1. 解析检索条件
@@ -104,272 +94,142 @@ public class EsCountService {
             query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
         }
 
-
         EsCountDTO esCountDTO = new EsCountDTO();
         List<EsCountDetailDTO> detailDTOS = new ArrayList<>();
-        List<EsCountVO> countVOS = countVO.getCountVOS();
-        for (EsCountVO vo : countVOS) {
-            String field = vo.getField();
-            Integer topN = vo.getTopN();
-            String condition = searchCondition;
-            //查询es返回数据
-            Aggregation aggregation = this.selectAggregation(builder, vo);
+        List<EsCountVO> countVOS = vo.getCountVOS();
+        for (EsCountVO countVO : countVOS) {
+            String field = countVO.getField();
+            Integer topN = countVO.getTopN();
+            Boolean ifHaveChild = countVO.getIfHaveChild();
+            String fieldId = countVO.getFieldId();
+            Integer fieldType = countVO.getFieldType();
+            String format = countVO.getFormat();
+            String valueOne = countVO.getValueOne();
+            String valueTwo = countVO.getValueTwo();
+            List<String> values = countVO.getValues();
+
+            IEsCountAnalysisBuilder iEsCountAnalysisBuilder = null;
+            String json = CommonService.readJsonFile("esCountAnalysis.json");
+            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
+            EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field))
+                    .findFirst().orElse(null);
+
+            Aggregation aggregation = null;
+            if (esConfigVO != null) {
+                iEsCountAnalysisBuilder = esCountAnalysisBuilderFactory.getClass(esConfigVO.getEsClass());
+                iEsCountAnalysisBuilder.setField(esConfigVO.getEsField());
+                iEsCountAnalysisBuilder.setValueOne(valueOne);
+                iEsCountAnalysisBuilder.setValueTwo(valueTwo);
+                iEsCountAnalysisBuilder.setValues(values);
+                iEsCountAnalysisBuilder.setFieldId(fieldId);
+                iEsCountAnalysisBuilder.setFieldType(String.valueOf(fieldType));
+                iEsCountAnalysisBuilder.setTopN(topN);
+                iEsCountAnalysisBuilder.setFormat(format);
+                iEsCountAnalysisBuilder.setIfHaveChild(ifHaveChild);
+                if (iEsCountAnalysisBuilder.getField().contains(".")) {
+                    String path = iEsCountAnalysisBuilder.getField()
+                            .substring(0, iEsCountAnalysisBuilder.getField().indexOf("."));
+                    iEsCountAnalysisBuilder.setPath(path);
+                }
+                aggregation = iEsCountAnalysisBuilder.createCountAnalyseAgg();
+            }
             if (query != null) {
                 Query finalQuery = query;
+                Aggregation finalAggregation = aggregation;
                 Aggregation filtersAgg = new Aggregation.Builder().filters(new FiltersAggregation.Builder()
                         .filters(i -> i.array(Arrays.asList(finalQuery))).build())
                         .aggregations(new HashMap() {{
-                            put("filters_agg", aggregation);
+                            put("filters_agg", finalAggregation);
                         }}).build();
                 builder.aggregations("Agg", filtersAgg);
             } else {
                 builder.aggregations("Agg", aggregation);
             }
             SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-
             Aggregate agg = response.aggregations().get("Agg");
             if (query != null) {
+                String finalSearchCondition = searchCondition;
                 if (StringUtils.isNotEmpty(field)) {
                     List<FiltersBucket> filtersBuckets = agg.filters().buckets().array();
                     if (dateList.contains(field)) {
-                        filtersBuckets.forEach(filtersBucket -> {
-                            this.getFiltersCountDTO(filtersBucket, condition, detailDTOS);
-                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                            this.getDateCountDTOS(filtersAgg, field, topN, detailDTOS,esCountDTO);
-                        });
+                        if (CollectionUtils.isEmpty(values)) {
+                            filtersBuckets.forEach(filtersBucket -> {
+//                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                try {
+                                    this.getDateCountDTOS(filtersAgg, field, topN,format, detailDTOS,esCountDTO);
+                                } catch (ParseException e) {
+                                    e.printStackTrace();
+                                }
+                            });
+                        } else {
+                            filtersBuckets.forEach(filtersBucket -> {
+//                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getDateAnalysisDTOS(filtersAgg, field, topN, detailDTOS,esCountDTO);
+                            });
+                        }
                     } else if (nestedList.contains(field)) {
                         filtersBuckets.forEach(filtersBucket -> {
-                            this.getFiltersCountDTO(filtersBucket, condition, detailDTOS);
+//                            this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
                             Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
                             this.getNestedCountDTOS(filtersAgg, field, detailDTOS);
+                            if (!CollectionUtils.isEmpty(values)) {
+                                esCountDTO.setAllNumber(filtersAgg.nested().docCount());
+                            }
                         });
                     } else if (childList.contains(field)) {
-                        filtersBuckets.forEach(filtersBucket -> {
-                            this.getFiltersCountDTO(filtersBucket, condition, detailDTOS);
-                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                            this.getChildCountDTOS(filtersAgg, field, detailDTOS,esCountDTO);
-                        });
+                        if (CollectionUtils.isEmpty(values)) {
+                            filtersBuckets.forEach(filtersBucket -> {
+//                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getChildCountDTOS(filtersAgg, field, detailDTOS,esCountDTO);
+                            });
+                        } else {
+                            filtersBuckets.forEach(filtersBucket -> {
+//                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
+                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                                this.getChildAnalysisDTOS(filtersAgg, field, detailDTOS,esCountDTO);
+                            });
+                        }
+                    } 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, condition, detailDTOS);
+//                            this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
                             Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
                             this.getTermCountDTOS(filtersAgg, field, detailDTOS);
                         });
                     }
                 } else {
-                    this.getFilterCountDTO(agg, condition, detailDTOS);
-                }
-            } else {
-                if (dateList.contains(field)) {
-                    this.getDateCountDTOS(agg, field, topN, detailDTOS,esCountDTO);
-                } else if (nestedList.contains(field)) {
-                    this.getNestedCountDTOS(agg, field, detailDTOS);
-                } else if (childList.contains(field)) {
-                    this.getChildCountDTOS(agg, field, detailDTOS,esCountDTO);
-                } else {
-                    this.getTermCountDTOS(agg, field, detailDTOS);
-                }
-            }
-        }
-        esCountDTO.setDetailDTOS(detailDTOS);
-        return esCountDTO;
-    }
-
-    /**
-     * 专利的聚合分析
-     *
-     * @param countVO
-     * @return
-     * @throws Exception
-     */
-    public EsCountDTO esAnalysisSearch(EsAllCountVO countVO) throws Exception {
-        String searchCondition = countVO.getCondition();
-        List<EsCustomFieldValueDTO> customFields = countVO.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = esService.parseCustomField(customFields);
-        }
-        Integer taskId = countVO.getTaskId();
-        Integer projectId = countVO.getProjectId();
-        if (taskId != null) {
-            if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                searchCondition = "taskId = " + taskId + " AND " + searchCondition;
-            } else {
-                searchCondition = "taskId = " + taskId;
-            }
-        } else {
-            if (projectId != null) {
-                if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                    searchCondition = "projectId = " + projectId + " AND " + searchCondition;
-                } else {
-                    searchCondition = "projectId = " + projectId;
-                }
-            }
-        }
-
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        Query query = null;
-        if (StringUtils.isNotEmpty(searchCondition)) {
-            //1. 解析检索条件
-            treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
-            //格式化检索式
-            //3. 从es中检索数据
-            query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
-        }
-
-        EsCountDTO esCountDTO = new EsCountDTO();
-        List<EsCountDetailDTO> detailDTOS = new ArrayList<>();
-        List<EsCountVO> countVOS = countVO.getCountVOS();
-        for (EsCountVO vo : countVOS) {
-            String field = vo.getField();
-            Integer topN = vo.getTopN();
-            Boolean ifHaveChild = vo.getIfHaveChild();
-            String fieldId = vo.getFieldId();
-            List<String> values = vo.getValues();
-
-            //查询es返回数据
-            builder.index("patent");
-            IEsAnalysisBuilder iEsAnalysisBuilder = null;
-            String json = CommonService.readJsonFile("esAnalysis.json");
-            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-            EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field))
-                    .findFirst().orElse(null);
-            if (esConfigVO != null) {
-                iEsAnalysisBuilder = esAnalysisBuilderFactory.getClass(esConfigVO.getEsClass());
-                iEsAnalysisBuilder.setField(esConfigVO.getEsField());
-                iEsAnalysisBuilder.setTopN(topN);
-                iEsAnalysisBuilder.setIfHaveChild(ifHaveChild);
-                iEsAnalysisBuilder.setFieldValue(fieldId);
-                if (iEsAnalysisBuilder.getField().contains(".")) {
-                    String path = iEsAnalysisBuilder.getField().substring(0, iEsAnalysisBuilder.getField().indexOf("."));
-                    iEsAnalysisBuilder.setPath(path);
-                }
-                iEsAnalysisBuilder.setValues(values);
-
-                Aggregation aggregation = iEsAnalysisBuilder.createAnalyseAgg();
-
-                if (query != null) {
-                    Query finalQuery = query;
-                    Aggregation filtersAgg = new Aggregation.Builder().filters(new FiltersAggregation.Builder()
-                            .filters(i -> i.array(Arrays.asList(finalQuery))).build())
-                            .aggregations(new HashMap() {{
-                                put("filters_agg", aggregation);
-                            }}).build();
-                    builder.aggregations("Agg", filtersAgg);
-                } else {
-                    builder.aggregations("Agg", aggregation);
-                }
-
-                builder.aggregations("Agg", aggregation);
-                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-
-                Aggregate agg = response.aggregations().get("Agg");
-                if (dateList.contains(field)) {
-                    this.getDateAnalysisDTOS(agg, field, topN, detailDTOS,esCountDTO);
-                } else if (nestedList.contains(field)) {
-                    this.getNestedCountDTOS(agg, field, detailDTOS);
-                } else if (childList.contains(field)) {
-                    this.getChildAnalysisDTOS(agg, field, detailDTOS, esCountDTO);
-                } else if (numberList.contains(field)) {
-                    this.getNumberAnalysisDTOS(agg, field, detailDTOS);
-                } else {
-                    this.getTermCountDTOS(agg, field, detailDTOS);
+                    this.getFilterCountDTO(agg, finalSearchCondition, detailDTOS);
                 }
-            }
-        }
-        esCountDTO.setDetailDTOS(detailDTOS);
-        return esCountDTO;
-    }
-
-    //测试用的
-    public EsCountDTO esAnalysis(EsAllCountVO countVO) throws Exception {
-        String searchCondition = countVO.getCondition();
-        List<EsCustomFieldValueDTO> customFields = countVO.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = esService.parseCustomField(customFields);
-        }
-        Integer taskId = countVO.getTaskId();
-        Integer projectId = countVO.getProjectId();
-        if (taskId != null) {
-            if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                searchCondition = "taskId = " + taskId + " AND " + searchCondition;
             } else {
-                searchCondition = "taskId = " + taskId;
-            }
-        } else {
-            if (projectId != null) {
-                if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                    searchCondition = "projectId = " + projectId + " AND " + searchCondition;
-                } else {
-                    searchCondition = "projectId = " + projectId;
-                }
-            }
-        }
-
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        Query query = null;
-        if (StringUtils.isNotEmpty(searchCondition)) {
-            //1. 解析检索条件
-            treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
-            //格式化检索式
-            //3. 从es中检索数据
-            query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
-        }
-
-        EsCountDTO esCountDTO = new EsCountDTO();
-        List<EsCountDetailDTO> detailDTOS = new ArrayList<>();
-        List<EsCountVO> countVOS = countVO.getCountVOS();
-        for (EsCountVO vo : countVOS) {
-            String field = vo.getField();
-            Integer topN = vo.getTopN();
-            Boolean ifHaveChild = vo.getIfHaveChild();
-            String fieldId = vo.getFieldId();
-            List<String> values = vo.getValues();
-
-            //查询es返回数据
-            builder.index("patent");
-            IEsAnalysisBuilder iEsAnalysisBuilder = null;
-            String json = CommonService.readJsonFile("esAnalysis.json");
-            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-            EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field))
-                    .findFirst().orElse(null);
-            if (esConfigVO != null) {
-                iEsAnalysisBuilder = esAnalysisBuilderFactory.getClass(esConfigVO.getEsClass());
-                iEsAnalysisBuilder.setField(esConfigVO.getEsField());
-                iEsAnalysisBuilder.setTopN(topN);
-                iEsAnalysisBuilder.setIfHaveChild(ifHaveChild);
-                iEsAnalysisBuilder.setFieldValue(fieldId);
-                if (iEsAnalysisBuilder.getField().contains(".")) {
-                    String path = iEsAnalysisBuilder.getField().substring(0, iEsAnalysisBuilder.getField().indexOf("."));
-                    iEsAnalysisBuilder.setPath(path);
-                }
-                iEsAnalysisBuilder.setValues(values);
-
-                Aggregation aggregation = iEsAnalysisBuilder.createAnalyseAgg();
-
-                if (query != null) {
-                    Query finalQuery = query;
-                    Aggregation filtersAgg = new Aggregation.Builder().filters(new FiltersAggregation.Builder()
-                            .filters(i -> i.array(Arrays.asList(finalQuery))).build())
-                            .aggregations(new HashMap() {{
-                                put("filters_agg", aggregation);
-                            }}).build();
-                    builder.aggregations("Agg", filtersAgg);
-                } else {
-                    builder.aggregations("Agg", aggregation);
-                }
-
-                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-
-                Aggregate agg = response.aggregations().get("Agg");
                 if (dateList.contains(field)) {
-                    this.getDateAnalysisDTOS(agg, field, topN, detailDTOS,esCountDTO);
+                    if (CollectionUtils.isEmpty(values)) {
+                        this.getDateCountDTOS(agg, field, topN,format, detailDTOS,esCountDTO);
+                    } else {
+                        this.getDateAnalysisDTOS(agg, field, topN, detailDTOS,esCountDTO);
+                    }
                 } else if (nestedList.contains(field)) {
                     this.getNestedCountDTOS(agg, field, detailDTOS);
+                    if (!CollectionUtils.isEmpty(values)) {
+                        esCountDTO.setAllNumber(agg.nested().docCount());
+                    }
                 } else if (childList.contains(field)) {
-                    this.getChildAnalysisDTOS(agg, field, detailDTOS, esCountDTO);
+                    if (CollectionUtils.isEmpty(values)) {
+                        this.getChildCountDTOS(agg, field, detailDTOS,esCountDTO);
+                    } else {
+                        this.getChildAnalysisDTOS(agg, field, detailDTOS, esCountDTO);
+                    }
                 } else if (numberList.contains(field)) {
                     this.getNumberAnalysisDTOS(agg, field, detailDTOS);
                 } else {
@@ -378,51 +238,11 @@ public class EsCountService {
             }
         }
         esCountDTO.setDetailDTOS(detailDTOS);
+        esCountDTO.setCondition(searchCondition);
         return esCountDTO;
     }
 
     /**
-     * 获取聚合后的aggregation
-     *
-     * @param builder
-     * @param vo
-     * @return
-     * @throws Exception
-     */
-    public Aggregation selectAggregation(SearchRequest.Builder builder, EsCountVO vo) throws Exception {
-        String valueOne = vo.getValueOne();
-        String valueTwo = vo.getValueTwo();
-        Integer topN = vo.getTopN();
-        Boolean ifHaveChild = vo.getIfHaveChild();
-        String field = vo.getField();
-        Integer fieldType = vo.getFieldType();
-        String fieldId = vo.getFieldId();
-        Aggregation aggregation = null;
-
-        builder.index("patent");
-        IEsCountBuilder iEsCountBuilder = null;
-        String json = CommonService.readJsonFile("esCount.json");
-        List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-        EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field)).findFirst().orElse(null);
-        if (esConfigVO != null) {
-            iEsCountBuilder = esCountBuilderFactory.getClass(esConfigVO.getEsClass());
-            iEsCountBuilder.setField(esConfigVO.getEsField());
-            iEsCountBuilder.setFieldId(fieldId);
-            iEsCountBuilder.setValueOne(valueOne);
-            iEsCountBuilder.setValueTwo(valueTwo);
-            iEsCountBuilder.setTopN(topN);
-            iEsCountBuilder.setIfHaveChild(ifHaveChild);
-            iEsCountBuilder.setFieldType(String.valueOf(fieldType));
-            if (iEsCountBuilder.getField().contains(".")) {
-                String path = iEsCountBuilder.getField().substring(0, iEsCountBuilder.getField().indexOf("."));
-                iEsCountBuilder.setPath(path);
-            }
-            aggregation = iEsCountBuilder.createAggregation();
-        }
-        return aggregation;
-    }
-
-    /**
      * 获取Filter聚合返回数据
      *
      * @param agg
@@ -440,23 +260,6 @@ public class EsCountService {
     }
 
     /**
-     * 获取Filters聚合返回数据
-     *
-     * @param filtersBucket
-     * @param condition
-     * @return
-     */
-    public void getFiltersCountDTO(FiltersBucket filtersBucket, String condition, List<EsCountDetailDTO> detailDTOS) {
-        EsCountDetailDTO filtersDTO = new EsCountDetailDTO();
-        filtersDTO.setField("condition");
-        filtersDTO.setName(condition);
-        filtersDTO.setNumber(filtersBucket.docCount());
-        if (filtersDTO.getNumber() > 0) {
-            detailDTOS.add(filtersDTO);
-        }
-    }
-
-    /**
      * 获取Terms聚合后数据
      *
      * @param agg
@@ -580,23 +383,72 @@ public class EsCountService {
      * @param field
      * @param detailDTOS
      */
-    public void getDateCountDTOS(Aggregate agg, String field, Integer topN, List<EsCountDetailDTO> detailDTOS,EsCountDTO esCountDTO) {
+    public void getDateCountDTOS(Aggregate agg, String field, Integer topN, String format, List<EsCountDetailDTO> detailDTOS, EsCountDTO esCountDTO) throws ParseException {
         List<DateHistogramBucket> list = agg.dateHistogram().buckets().array();
         esCountDTO.setAllNumber(Long.valueOf(String.valueOf(list.size())));
         List<EsCountDetailDTO> esCountDetailDTOS = new ArrayList<>();
-        list.forEach(bucket -> {
-            EsCountDetailDTO dto = new EsCountDetailDTO();
-            dto.setField(field);
-            Aggregate aggregate = bucket.aggregations().get("filter_agg");
-            dto.setName(bucket.keyAsString());
-            dto.setNumber(bucket.docCount());
-            if (aggregate != null) {
-                dto.setNumber(aggregate.filter().docCount());
+        if (format.equals("半年")) {
+            List<EsCountDetailDTO> detailDTOList = new ArrayList<>();
+            for (DateHistogramBucket bucket : list) {
+                String year = bucket.keyAsString();
+                SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");
+                String startMonth = year + "-01";
+                Calendar calendar = Calendar.getInstance();
+                Date date = monthFormat.parse(startMonth);
+                calendar.setTime(date);
+                calendar.add(Calendar.MONTH, 6);
+                Date halfYearDate = calendar.getTime();
+                Aggregate aggregate = bucket.aggregations().get("halfYearAgg");
+                List<DateHistogramBucket> buckets = aggregate.dateHistogram().buckets().array();
+                long h1Count = 0;
+                long h2Count = 0;
+                for (DateHistogramBucket histogramBucket : buckets) {
+                    String key = histogramBucket.keyAsString();
+                    Date month = monthFormat.parse(key);
+                    EsCountDetailDTO dto = new EsCountDetailDTO();
+                    dto.setField(field);
+                    dto.setName(year + "-H1");
+                    dto.setNumber(h1Count);
+                    EsCountDetailDTO dto2 = new EsCountDetailDTO();
+                    dto2.setField(field);
+                    dto2.setName(year + "-H2");
+                    dto2.setNumber(h2Count);
+                    if (month.before(halfYearDate)) {
+                        h1Count += histogramBucket.docCount();
+                        dto.setNumber(h1Count);
+                    }
+                    if (month.after(halfYearDate)){
+                        h2Count += histogramBucket.docCount();
+                        dto2.setNumber(h2Count);
+                    }
+                    detailDTOList.add(dto);
+                    detailDTOList.add(dto2);
+                }
             }
-            if (dto.getNumber() > 0) {
-                esCountDetailDTOS.add(dto);
+            Map<String, List<EsCountDetailDTO>> map = detailDTOList.stream().collect(Collectors.groupingBy(EsCountDetailDTO::getName));
+            for (String key : map.keySet()) {
+                List<EsCountDetailDTO> dtoList = map.get(key);
+                long sum = dtoList.stream().mapToLong(EsCountDetailDTO::getNumber).sum();
+                EsCountDetailDTO detailDTO = dtoList.get(0);
+                detailDTO.setNumber(sum);
+                esCountDetailDTOS.add(detailDTO);
             }
-        });
+        } else {
+            list.forEach(bucket -> {
+                EsCountDetailDTO dto = new EsCountDetailDTO();
+                dto.setField(field);
+                Aggregate aggregate = bucket.aggregations().get("filter_agg");
+                dto.setName(bucket.keyAsString());
+                dto.setNumber(bucket.docCount());
+                if (aggregate != null) {
+                    dto.setNumber(aggregate.filter().docCount());
+                }
+                if (dto.getNumber() > 0) {
+                    esCountDetailDTOS.add(dto);
+                }
+            });
+        }
+
         if (!CollectionUtils.isEmpty(esCountDetailDTOS)) {
             List<EsCountDetailDTO> collect = esCountDetailDTOS.stream()
                     .sorted(Comparator.comparing(EsCountDetailDTO::getName).reversed()).limit(topN).collect(Collectors.toList());
@@ -657,191 +509,5 @@ public class EsCountService {
         });
     }
 
-    /**
-     * 聚合统计
-     * @param vo
-     * @return
-     * @throws Exception
-     */
-    public EsCountDTO esCountAnalysis(EsAllCountVO vo) throws Exception {
-        String searchCondition = vo.getCondition();
-        List<EsCustomFieldValueDTO> customFields = vo.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = esService.parseCustomField(customFields);
-        }
-        Integer taskId = vo.getTaskId();
-        Integer projectId = vo.getProjectId();
-        if (taskId != null) {
-            if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                searchCondition = "taskId = " + taskId + " AND " + searchCondition;
-            } else {
-                searchCondition = "taskId = " + taskId;
-            }
-        } else {
-            if (projectId != null) {
-                if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                    searchCondition = "projectId = " + projectId + " AND " + searchCondition;
-                } else {
-                    searchCondition = "projectId = " + projectId;
-                }
-            }
-        }
-
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        //设置查询索引
-        Query query = null;
-        if (StringUtils.isNotEmpty(searchCondition)) {
-            //1. 解析检索条件
-            treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
-            //格式化检索式
-            //3. 从es中检索数据
-            query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
-        }
-
-        EsCountDTO esCountDTO = new EsCountDTO();
-        List<EsCountDetailDTO> detailDTOS = new ArrayList<>();
-        List<EsCountVO> countVOS = vo.getCountVOS();
-        for (EsCountVO countVO : countVOS) {
-            String field = countVO.getField();
-            Integer topN = countVO.getTopN();
-            Boolean ifHaveChild = countVO.getIfHaveChild();
-            String fieldId = countVO.getFieldId();
-            Integer fieldType = countVO.getFieldType();
-            String format = countVO.getFormat();
-            String valueOne = countVO.getValueOne();
-            String valueTwo = countVO.getValueTwo();
-            List<String> values = countVO.getValues();
-
-            IEsCountAnalysisBuilder iEsCountAnalysisBuilder = null;
-            String json = CommonService.readJsonFile("esCountAnalysis.json");
-            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-            EsConfigVO esConfigVO = esConfigVOS.stream().filter(item -> item.getField().equals(field))
-                    .findFirst().orElse(null);
-
-            Aggregation aggregation = null;
-            if (esConfigVO != null) {
-                iEsCountAnalysisBuilder = esCountAnalysisBuilderFactory.getClass(esConfigVO.getEsClass());
-                iEsCountAnalysisBuilder.setField(esConfigVO.getEsField());
-                iEsCountAnalysisBuilder.setValueOne(valueOne);
-                iEsCountAnalysisBuilder.setValueTwo(valueTwo);
-                iEsCountAnalysisBuilder.setValues(values);
-                iEsCountAnalysisBuilder.setFieldId(fieldId);
-                iEsCountAnalysisBuilder.setFieldType(String.valueOf(fieldType));
-                iEsCountAnalysisBuilder.setTopN(topN);
-                iEsCountAnalysisBuilder.setFormat(format);
-                iEsCountAnalysisBuilder.setIfHaveChild(ifHaveChild);
-                if (iEsCountAnalysisBuilder.getField().contains(".")) {
-                    String path = iEsCountAnalysisBuilder.getField()
-                            .substring(0, iEsCountAnalysisBuilder.getField().indexOf("."));
-                    iEsCountAnalysisBuilder.setPath(path);
-                }
-                aggregation = iEsCountAnalysisBuilder.createCountAnalyseAgg();
-            }
-            if (query != null) {
-                Query finalQuery = query;
-                Aggregation finalAggregation = aggregation;
-                Aggregation filtersAgg = new Aggregation.Builder().filters(new FiltersAggregation.Builder()
-                        .filters(i -> i.array(Arrays.asList(finalQuery))).build())
-                        .aggregations(new HashMap() {{
-                            put("filters_agg", finalAggregation);
-                        }}).build();
-                builder.aggregations("Agg", filtersAgg);
-            } else {
-                builder.aggregations("Agg", aggregation);
-            }
-            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-            Aggregate agg = response.aggregations().get("Agg");
-            if (query != null) {
-                String finalSearchCondition = searchCondition;
-                if (StringUtils.isNotEmpty(field)) {
-                    List<FiltersBucket> filtersBuckets = agg.filters().buckets().array();
-                    if (dateList.contains(field)) {
-                        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,esCountDTO);
-                            });
-                        } else {
-                            filtersBuckets.forEach(filtersBucket -> {
-                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
-                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                                this.getDateAnalysisDTOS(filtersAgg, field, topN, detailDTOS,esCountDTO);
-                            });
-                        }
-                    } else if (nestedList.contains(field)) {
-                        filtersBuckets.forEach(filtersBucket -> {
-                            this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
-                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                            this.getNestedCountDTOS(filtersAgg, field, detailDTOS);
-                            if (!CollectionUtils.isEmpty(values)) {
-                                esCountDTO.setAllNumber(filtersAgg.nested().docCount());
-                            }
-                        });
-                    } else if (childList.contains(field)) {
-                        if (CollectionUtils.isEmpty(values)) {
-                            filtersBuckets.forEach(filtersBucket -> {
-                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
-                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                                this.getChildCountDTOS(filtersAgg, field, detailDTOS,esCountDTO);
-                            });
-                        } else {
-                            filtersBuckets.forEach(filtersBucket -> {
-                                this.getFiltersCountDTO(filtersBucket, finalSearchCondition, detailDTOS);
-                                Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                                this.getChildAnalysisDTOS(filtersAgg, field, detailDTOS,esCountDTO);
-                            });
-                        }
-                    } 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);
-                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
-                            this.getTermCountDTOS(filtersAgg, field, detailDTOS);
-                        });
-                    }
-                } else {
-                    this.getFilterCountDTO(agg, finalSearchCondition, detailDTOS);
-                }
-            } else {
-                if (dateList.contains(field)) {
-                    if (CollectionUtils.isEmpty(values)) {
-                        this.getDateCountDTOS(agg, field, topN, detailDTOS,esCountDTO);
-                    } else {
-                        this.getDateAnalysisDTOS(agg, field, topN, detailDTOS,esCountDTO);
-                    }
-                } else if (nestedList.contains(field)) {
-                    this.getNestedCountDTOS(agg, field, detailDTOS);
-                    if (!CollectionUtils.isEmpty(values)) {
-                        esCountDTO.setAllNumber(agg.nested().docCount());
-                    }
-                } else if (childList.contains(field)) {
-                    if (CollectionUtils.isEmpty(values)) {
-                        this.getChildCountDTOS(agg, field, detailDTOS,esCountDTO);
-                    } else {
-                        this.getChildAnalysisDTOS(agg, field, detailDTOS, esCountDTO);
-                    }
-                } else if (numberList.contains(field)) {
-                    this.getNumberAnalysisDTOS(agg, field, detailDTOS);
-                } else {
-                    this.getTermCountDTOS(agg, field, detailDTOS);
-                }
-            }
-        }
-        esCountDTO.setDetailDTOS(detailDTOS);
-        esCountDTO.setCondition(searchCondition);
-        return esCountDTO;
-    }
 
 }

+ 4 - 4
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -128,10 +128,6 @@ public class EsService {
         PatentDTO dto = new PatentDTO();
         Integer taskId =queryRequest.getTaskId();
         String searchCondition = "";
-        List<EsCustomFieldValueDTO> customFields = queryRequest.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = this.parseCustomField(customFields);
-        }
         Integer projectId = queryRequest.getProjectId();
         Long current = queryRequest.getCurrent();
         Long size = queryRequest.getSize();
@@ -151,6 +147,10 @@ public class EsService {
             }
             searchCondition = stringBuilder.toString();
         }
+        List<EsCustomFieldValueDTO> customFields = queryRequest.getCustomFields();
+        if (!CollectionUtils.isEmpty(customFields)) {
+            searchCondition = this.parseCustomField(customFields);
+        }
         if( taskId != null){
             if (searchCondition != null && !"".equals(searchCondition.trim())) {
                 searchCondition = "taskId = " + taskId + " AND " + searchCondition;

+ 0 - 602
src/main/resources/jsons/esAnalysis.json

@@ -1,602 +0,0 @@
-[
-  {
-    "name": "IPC分类号一级",
-    "type": "String",
-    "value": "ipcLevel1",
-    "field": "IC",
-    "esField": "mipc.level1",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号二级",
-    "type": "String",
-    "value": "ipcLevel2",
-    "field": "IC2",
-    "esField": "mipc.level2",
-    "esClass": "termsCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号三级",
-    "type": "String",
-    "value": "ipcLevel3",
-    "field": "IC3",
-    "esField": "mipc.level3",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号四级",
-    "type": "String",
-    "value": "ipcLevel4",
-    "field": "IC4",
-    "esField": "mipc.level4",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号五级",
-    "type": "String",
-    "value": "ipcLevel5",
-    "field": "IC5",
-    "esField": "mipc.level5",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号一级",
-    "type": "String",
-    "value": "cpcLevel1",
-    "field": "CPC",
-    "esField": "mcpc.level1",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号二级",
-    "type": "String",
-    "value": "cpcLevel2",
-    "field": "CPC2",
-    "esField": "mcpc.level2",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号三级",
-    "type": "String",
-    "value": "cpcLevel3",
-    "field": "CPC3",
-    "esField": "mcpc.level3",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号四级",
-    "type": "String",
-    "value": "cpcLevel4",
-    "field": "CPC4",
-    "esField": "mcpc.level4",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号五级",
-    "type": "String",
-    "value": "cpcLevel5",
-    "field": "CPC5",
-    "esField": "mcpc.level5",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号一级",
-    "type": "String",
-    "value": "upcLevel1",
-    "field": "UPC",
-    "esField": "mupc.level1",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号二级",
-    "type": "String",
-    "value": "upcLevel2",
-    "field": "UPC2",
-    "esField": "mupc.level2",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号三级",
-    "type": "String",
-    "value": "upcLevel3",
-    "field": "UPC3",
-    "esField": "mupc.level3",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号一级",
-    "type": "String",
-    "value": "locLevel1",
-    "field": "LOC",
-    "esField": "mloc.level1",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号二级",
-    "type": "String",
-    "value": "locLevel2",
-    "field": "LOC2",
-    "esField": "mloc.level2",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号三级",
-    "type": "String",
-    "value": "locLevel3",
-    "field": "LOC3",
-    "esField": "mloc.level3",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人",
-    "type": "String",
-    "value": "applicant",
-    "field": "PA",
-    "esField": "applicant.name.key",
-    "esClass": "nestedCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "标准申请人",
-    "type": "String",
-    "value": "standerApplicant",
-    "field": "SAT",
-    "esField": "stander_applicant.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "合并申请人",
-    "type": "String",
-    "value": "mergeApplicant",
-    "field": "MAT",
-    "esField": "merge_applicant.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "权利人",
-    "type": "String",
-    "value": "rightHolder",
-    "field": "PE",
-    "esField": "right_holder.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "标准权利人",
-    "type": "String",
-    "value": "standerRightHolder",
-    "field": "SRH",
-    "esField": "stander_right_holder.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "合并权利人",
-    "type": "String",
-    "value": "mergeRightHolder",
-    "field": "MRH",
-    "esField": "merge_right_holder.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "发明人",
-    "type": "String",
-    "value": "inventor",
-    "field": "IN",
-    "esField": "inventor.name.key",
-    "esClass": "nestedAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "代理机构",
-    "type": "String",
-    "value": "agency",
-    "field": "AGN",
-    "esField": "agency",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "代理人名称",
-    "type": "String",
-    "value": "agent",
-    "field": "PT",
-    "esField": "agent.key",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "公开日",
-    "type": "Date",
-    "value": "publicDate",
-    "field": "PD",
-    "esField": "public_date",
-    "esClass": "dateAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请日",
-    "type": "String",
-    "value": "appDate",
-    "field": "AD",
-    "esField": "app_date",
-    "esClass": "dateAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "授权日",
-    "type": "String",
-    "value": "grantDate",
-    "field": "GD",
-    "esField": "grant_date",
-    "esClass": "dateAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请国家(受理局)",
-    "type": "String",
-    "value": "appCountry",
-    "field": "CO",
-    "esField": "app_country",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人国家",
-    "type": "String",
-    "value": "appCountry",
-    "field": "DZ",
-    "esField": "applicant_addr.country",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人省份",
-    "type": "String",
-    "value": "appProvince",
-    "field": "ADP",
-    "esField": "applicant_addr.province",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人市区",
-    "type": "String",
-    "value": "appCity",
-    "field": "ADC",
-    "esField": "applicant_addr.city",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "权利人国家",
-    "type": "String",
-    "value": "rightCountry",
-    "field": "rightCountry",
-    "esField": "right_holder_addr.country",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "权利人省份",
-    "type": "String",
-    "value": "rightProvince",
-    "field": "rightProvince",
-    "esField": "right_holder_addr.province",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "权利人市区",
-    "type": "String",
-    "value": "rightCity",
-    "field": "rightCity",
-    "esField": "right_holder_addr.city",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "优先权国家",
-    "type": "String",
-    "value": "priorityCountry",
-    "field": "PC",
-    "esField": "priorities.prioritycountry",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "引用专利数量",
-    "type": "Integer",
-    "value": "quotePatentNoNum",
-    "field": "QPN",
-    "esField": "quote_patent_no_num",
-    "esClass": "rangeAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "被引用专利数量",
-    "type": "Integer",
-    "value": "quotedPatentNoNum",
-    "field": "QDPN",
-    "esField": "quoted_patent_no_num",
-    "esClass": "rangeAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "简单同族数量",
-    "type": "Integer",
-    "value": "simpleFamilyNum",
-    "field": "SFN",
-    "esField": "simple_family_num",
-    "esClass": "rangeAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "inpadoc同族数量",
-    "type": "Integer",
-    "value": "inpadocFamilyNum",
-    "field": "IFN",
-    "esField": "inpadoc_family_num",
-    "esClass": "rangeAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "扩展同族数量",
-    "type": "Integer",
-    "value": "patsnapFamilyNum",
-    "field": "PFN",
-    "esField": "patsnap_family_num",
-    "esClass": "rangeAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "专利状态",
-    "type": "String",
-    "value": "simpleStatus",
-    "field": "SS",
-    "esField": "simple_status",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "专利类型",
-    "type": "String",
-    "value": "patentType",
-    "field": "PT",
-    "esField": "patent_type",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "法律状态",
-    "type": "String",
-    "value": "legalStatus",
-    "field": "LG",
-    "esField": "legal_status",
-    "esClass": "termsAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位id",
-    "type": "String",
-    "value": "field",
-    "field": "field",
-    "esField": "custom_field.field",
-    "esClass": "childCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位类型",
-    "type": "String",
-    "value": "fieldType",
-    "field": "fieldType",
-    "esField": "custom_field.field_type",
-    "esClass": "childCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位统计值",
-    "type": "String",
-    "value": "statsValue",
-    "field": "statsValue",
-    "esField": "custom_field.stats_value.raw",
-    "esClass": "childCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位值",
-    "type": "String",
-    "value": "fieldValue",
-    "field": "fieldValue",
-    "esField": "custom_field.field_value.raw",
-    "esClass": "childCountAnalysisBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "业务任务",
-    "type": "String",
-    "value": "taskId",
-    "field": "taskId",
-    "esField": "project_task.task_id",
-    "esClass": "projectTaskQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "子文档号",
-    "type": "String",
-    "value": "projectId",
-    "field": "projectId",
-    "esField": "project_id",
-    "esClass": "childQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  }
-]

+ 0 - 386
src/main/resources/jsons/esCount.json

@@ -1,386 +0,0 @@
-[
-  {
-    "name": "申请人",
-    "type": "String",
-    "value": "applicant",
-    "field": "PA",
-    "esField": "applicant.name.key",
-    "esClass": "nestedCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "发明人",
-    "type": "String",
-    "value": "inventor",
-    "field": "IN",
-    "esField": "inventor.name.key",
-    "esClass": "nestedCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "权利人",
-    "type": "String",
-    "value": "rightHolder",
-    "field": "PE",
-    "esField": "right_holder.name.key",
-    "esClass": "nestedCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号一级",
-    "type": "String",
-    "value": "ipcLevel1",
-    "field": "IC",
-    "esField": "mipc.level1",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号二级",
-    "type": "String",
-    "value": "ipcLevel2",
-    "field": "IC2",
-    "esField": "mipc.level2",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号三级",
-    "type": "String",
-    "value": "ipcLevel3",
-    "field": "IC3",
-    "esField": "mipc.level3",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号四级",
-    "type": "String",
-    "value": "ipcLevel4",
-    "field": "IC4",
-    "esField": "mipc.level4",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "IPC分类号五级",
-    "type": "String",
-    "value": "ipcLevel5",
-    "field": "IC5",
-    "esField": "mipc.level5",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号一级",
-    "type": "String",
-    "value": "cpcLevel1",
-    "field": "CPC",
-    "esField": "mcpc.level1",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号二级",
-    "type": "String",
-    "value": "cpcLevel2",
-    "field": "CPC2",
-    "esField": "mcpc.level2",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号三级",
-    "type": "String",
-    "value": "cpcLevel3",
-    "field": "CPC3",
-    "esField": "mcpc.level3",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号四级",
-    "type": "String",
-    "value": "cpcLevel4",
-    "field": "CPC4",
-    "esField": "mcpc.level4",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "CPC分类号五级",
-    "type": "String",
-    "value": "cpcLevel5",
-    "field": "CPC5",
-    "esField": "mcpc.level5",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号一级",
-    "type": "String",
-    "value": "upcLevel1",
-    "field": "UPC",
-    "esField": "mupc.level1",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号二级",
-    "type": "String",
-    "value": "upcLevel2",
-    "field": "UPC2",
-    "esField": "mupc.level2",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "UPC分类号三级",
-    "type": "String",
-    "value": "upcLevel3",
-    "field": "UPC3",
-    "esField": "mupc.level3",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号一级",
-    "type": "String",
-    "value": "locLevel1",
-    "field": "LOC",
-    "esField": "mloc.level1",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号二级",
-    "type": "String",
-    "value": "locLevel2",
-    "field": "LOC2",
-    "esField": "mloc.level2",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "LOC分类号三级",
-    "type": "String",
-    "value": "locLevel3",
-    "field": "LOC3",
-    "esField": "mloc.level3",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "专利状态",
-    "type": "String",
-    "value": "simpleStatus",
-    "field": "SS",
-    "esField": "simple_status",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "专利类型",
-    "type": "String",
-    "value": "patentType",
-    "field": "PT",
-    "esField": "patent_type",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人国家",
-    "type": "String",
-    "value": "appCountry",
-    "field": "AAC",
-    "esField": "applicant_addr.country",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请人省份",
-    "type": "String",
-    "value": "appProvince",
-    "field": "ADP",
-    "esField": "applicant_addr.province",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "公开年",
-    "type": "String",
-    "value": "publicDate",
-    "field": "PD",
-    "esField": "public_date",
-    "esClass": "dateHistogramBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "申请年",
-    "type": "String",
-    "value": "appDate",
-    "field": "AD",
-    "esField": "app_date",
-    "esClass": "dateHistogramBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "受理局",
-    "type": "String",
-    "value": "appCountry",
-    "field": "CO",
-    "esField": "app_country",
-    "esClass": "termsCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位id",
-    "type": "String",
-    "value": "field",
-    "field": "field",
-    "esField": "custom_field.field",
-    "esClass": "childCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位类型",
-    "type": "String",
-    "value": "fieldType",
-    "field": "fieldType",
-    "esField": "custom_field.field_type",
-    "esClass": "childCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位统计值",
-    "type": "String",
-    "value": "statsValue",
-    "field": "statsValue",
-    "esField": "custom_field.stats_value.raw",
-    "esClass": "childCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "自定义栏位值",
-    "type": "String",
-    "value": "fieldValue",
-    "field": "fieldValue",
-    "esField": "custom_field.field_value.raw",
-    "esClass": "childCountBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "业务任务",
-    "type": "String",
-    "value": "taskId",
-    "field": "taskId",
-    "esField": "project_task.task_id",
-    "esClass": "projectTaskQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  },
-  {
-    "name": "子文档号",
-    "type": "String",
-    "value": "projectId",
-    "field": "projectId",
-    "esField": "project_id",
-    "esClass": "childQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "false",
-    "ifAsCondition": "true"
-  }
-]