zero 1 rok pred
rodič
commit
5aa0b2e2fa

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/business/EsCountDetailDTO.java

@@ -7,6 +7,6 @@ public class EsCountDetailDTO {
     //名称
     private String name;
     //数量
-    private Integer number;
+    private Long number;
 
 }

+ 16 - 6
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/NestedCountBuilder.java

@@ -1,12 +1,14 @@
 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.*;
 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 = "";
@@ -17,15 +19,23 @@ public class NestedCountBuilder implements IEsCountBuilder {
 
     @Override
     public Aggregation createAggregation() {
-
-
         Aggregation terms = AggregationBuilders.terms(j -> j.field(field).size(topN));
         if (StringUtils.isNotEmpty(valueOne)) {
             Query query = QueryBuilders.term(j -> j.field(field).value(valueOne));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
-            terms.aggregations().put("filter_agg",filter);
+            terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
+                    .field(field).size(topN).build())
+                    .aggregations(new HashMap() {{
+                        put("filter_agg", filter);
+                    }}).build();
         }
-        return AggregationBuilders.nested(i -> i.path(path)).aggregations().put("terms_agg", terms);
+        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

+ 11 - 5
src/main/java/cn/cslg/pas/factorys/EsCountBuilderFactory/TermsCountBuilder.java

@@ -2,11 +2,15 @@ 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 = "";
@@ -17,12 +21,14 @@ public class TermsCountBuilder implements IEsCountBuilder{
 
     @Override
     public Aggregation createAggregation() {
-
-        Aggregation aggregation = AggregationBuilders.terms(i -> i.field(field).size(topN));
+        Aggregation aggregation = AggregationBuilders.terms(i -> i.field(field).size(topN)).terms()._toAggregation();
         if (StringUtils.isNotEmpty(valueOne)) {
-            Query query = QueryBuilders.term(j -> j.field(field).value(valueOne));
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
-            aggregation.aggregations().put("filter_agg",filter);
+            Aggregation filter = AggregationBuilders.filter(n -> n.term(m -> m.field(field).value(valueOne)));
+            aggregation = new Aggregation.Builder().terms(new TermsAggregation.Builder()
+                    .field(field).size(topN).build())
+                    .aggregations(new HashMap() {{
+                        put("filter_agg", filter);
+                    }}).build();
         }
         return aggregation;
     }

+ 13 - 3
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service.business.es;
 
 import cn.cslg.pas.common.dto.PatentDTO;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
+import cn.cslg.pas.common.dto.business.EsCountDetailDTO;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.business.EsCountVO;
@@ -15,6 +16,7 @@ import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.json.JsonData;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +24,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.data.elasticsearch.client.elc.ElasticsearchAggregations;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -47,7 +50,7 @@ public class EsCountService {
         EsCountDTO esCountDTO = new EsCountDTO();
 
         SearchRequest.Builder builder = new SearchRequest.Builder();
-        builder.index("patent");
+        builder.index("patent_v1");
         IEsCountBuilder iEsCountBuilder = null;
         String json = CommonService.readJsonFile("esCount.json");
         List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
@@ -64,12 +67,19 @@ public class EsCountService {
             }
 
         }
-//        AggregationBuilders.t
         Aggregation aggregation = iEsCountBuilder.createAggregation();
         builder.aggregations("Agg", aggregation);
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         Aggregate agg = response.aggregations().get("Agg");
-
+        List<StringTermsBucket> list = agg.sterms().buckets().array();
+        List<EsCountDetailDTO> detailDTOS = new ArrayList<>();
+        list.forEach(bucket -> {
+            EsCountDetailDTO dto = new EsCountDetailDTO();
+            dto.setName(bucket.key().stringValue());
+            dto.setNumber(bucket.docCount());
+            detailDTOS.add(dto);
+        });
+        esCountDTO.setDetailDTOS(detailDTOS);
         return esCountDTO;
     }
 }

+ 3 - 3
src/main/resources/jsons/esCount.json

@@ -4,7 +4,7 @@
     "type": "String",
     "value": "PA",
     "field": "PA",
-    "esField": "applicant.name",
+    "esField": "applicant.name.key",
     "esClass": "nestedCountBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -16,7 +16,7 @@
     "type": "String",
     "value": "IN",
     "field": "IN",
-    "esField": "inventor.name",
+    "esField": "inventor.name.key",
     "esClass": "nestedCountBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -28,7 +28,7 @@
     "type": "String",
     "value": "PE",
     "field": "PE",
-    "esField": "right_holder.name",
+    "esField": "right_holder.name.key",
     "esClass": "nestedCountBuilder",
     "ifSearch": "false",
     "ifGroup": "false",

+ 19 - 7
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -1,16 +1,19 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.PatentDTO;
+import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.*;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.EsCountVO;
 import cn.cslg.pas.controller.EventController;
 import cn.cslg.pas.controller.PatentController;
 import cn.cslg.pas.domain.es.FamilyPatent;
 import cn.cslg.pas.domain.es.PatentFamilyMessage;
 import cn.cslg.pas.service.business.ProductMarketDataService;
+import cn.cslg.pas.service.business.es.EsCountService;
 import cn.cslg.pas.service.business.es.EsService;
 import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
 import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
@@ -44,6 +47,8 @@ public class EventServiceTests {
     PatentController patentController;
     @Autowired
     private EsService esService;
+    @Autowired
+    private EsCountService esCountService;
 
 
 
@@ -247,12 +252,19 @@ public class EventServiceTests {
     }
 
     @Test
-    void test8() {
-        String valueOne = "";
-        String str = "*";
-        String s = str.concat(valueOne).concat("*");
-        Query query = QueryBuilders.wildcard(i -> i.field("").value(s));
-        Aggregation aggregation = AggregationBuilders.filter(i -> i.bool(j -> j.must(query)));
-        System.out.println(aggregation);
+    void test8() throws Exception {
+//        String valueOne = "";
+//        String str = "*";
+//        String s = str.concat(valueOne).concat("*");
+//        Query query = QueryBuilders.wildcard(i -> i.field("").value(s));
+//        Aggregation aggregation = AggregationBuilders.filter(i -> i.bool(j -> j.must(query)));
+//        System.out.println(aggregation);
+        EsCountVO vo = new EsCountVO();
+        vo.setField("PT");
+        vo.setValueOne("1");
+//        vo.setField("PA");
+        EsCountDTO esCountDTO = esCountService.esCountSearch(vo);
+        System.out.println(esCountDTO);
+
     }
 }