zero vor 1 Jahr
Ursprung
Commit
f66572ec04

+ 0 - 1
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -184,7 +184,6 @@ public class EsCountService {
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");
-        //设置查询索引
         Query query = null;
         if (StringUtils.isNotEmpty(searchCondition)) {
             //1. 解析检索条件

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

@@ -225,12 +225,11 @@ public class EsService {
                     .aggregations(new HashMap() {{
                         put("hitAgg", hits);
                     }}).build();
-            Aggregation filtersAgg = new Aggregation.Builder().filters(new FiltersAggregation.Builder()
-                    .filters(i -> i.array(Arrays.asList(q))).build())
+            Aggregation filterAgg = new Aggregation.Builder().filter(i -> i.bool(j -> j.must(q)))
                     .aggregations(new HashMap() {{
-                        put("filtersAgg", aggregation);
+                        put("filterAgg", aggregation);
                     }}).build();
-            builder.aggregations("Agg", filtersAgg);
+            builder.aggregations("Agg", filterAgg);
         } else {
             //4. 返回数据
             builder.query(q);
@@ -275,59 +274,56 @@ public class EsService {
         long total = 0L;
         if (StringUtils.isNotEmpty(esField)) {
             Aggregate agg = response.aggregations().get("Agg");
-            List<FiltersBucket> buckets = agg.filters().buckets().array();
-            for (FiltersBucket bucket : buckets) {
-                Aggregate filtersAgg = bucket.aggregations().get("filtersAgg");
-                List<StringTermsBucket> termsBuckets = filtersAgg.sterms().buckets().array();
-                for (StringTermsBucket termsBucket : termsBuckets) {
-                    Aggregate hitAgg = termsBucket.aggregations().get("hitAgg");
-                    total = hitAgg.topHits().hits().total().value();
-                    List<Hit<JsonData>> hits = hitAgg.topHits().hits().hits();
-                    hits.forEach(hit -> {
-                        String id = hit.id();
-                        JsonData data = hit.source();
-                        Patent patent1 = JSONObject.parseObject(String.valueOf(data), Patent.class);
-                        PatentColumnDTO columnDTO = new PatentColumnDTO();
-                        BeanUtils.copyProperties(patent1, columnDTO);
-                        if (projectId != null) {
-                            try {
-                                columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId, id));
-                            } catch (IOException e) {
-                                columnDTO.setMergeApplicant(new ArrayList<>());
-                            }
-                            try {
-                                columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
-                            } catch (IOException e) {
-                                columnDTO.setMergeRightHolder(new ArrayList<>());
-                            }
-                            try {
-                                columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
-                            } catch (IOException e) {
-                                columnDTO.setMergeInventor(new ArrayList<>());
-                            }
+            Aggregate filtersAgg = agg.filter().aggregations().get("filterAgg");
+            List<StringTermsBucket> termsBuckets = filtersAgg.sterms().buckets().array();
+            for (StringTermsBucket termsBucket : termsBuckets) {
+                Aggregate hitAgg = termsBucket.aggregations().get("hitAgg");
+                total = hitAgg.topHits().hits().total().value();
+                List<Hit<JsonData>> hits = hitAgg.topHits().hits().hits();
+                hits.forEach(hit -> {
+                    String id = hit.id();
+                    JsonData data = hit.source();
+                    Patent patent1 = JSONObject.parseObject(String.valueOf(data), Patent.class);
+                    PatentColumnDTO columnDTO = new PatentColumnDTO();
+                    BeanUtils.copyProperties(patent1, columnDTO);
+                    if (projectId != null) {
+                        try {
+                            columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId, id));
+                        } catch (IOException e) {
+                            columnDTO.setMergeApplicant(new ArrayList<>());
                         }
-                        if (ObjectUtils.isNotEmpty(patent1.getApplicantAddr())) {
-                            PersonAddress applicantAddr = patent1.getApplicantAddr();
-                            columnDTO.setAppAddress(applicantAddr.getAddress());
-                            columnDTO.setApplicantCountry(applicantAddr.getCountry());
-                            columnDTO.setAppProvince(applicantAddr.getProvince());
-                            columnDTO.setAppCity(applicantAddr.getCity());
-                            columnDTO.setAppDistrict(applicantAddr.getDistrict());
+                        try {
+                            columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
+                        } catch (IOException e) {
+                            columnDTO.setMergeRightHolder(new ArrayList<>());
                         }
-                        if (ObjectUtils.isNotEmpty(patent1.getRightHolderAddr())) {
-                            PersonAddress rightAddr = patent1.getRightHolderAddr();
-                            columnDTO.setRightAddress(rightAddr.getAddress());
-                            columnDTO.setRightCountry(rightAddr.getCountry());
-                            columnDTO.setRightProvince(rightAddr.getProvince());
-                            columnDTO.setRightCity(rightAddr.getCity());
-                            columnDTO.setRightDistrict(rightAddr.getDistrict());
+                        try {
+                            columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
+                        } catch (IOException e) {
+                            columnDTO.setMergeInventor(new ArrayList<>());
                         }
-                        columnDTO.setApplicant(esPatentService.loadName(patent1.getApplicant()));
-                        columnDTO.setRightHolder(esPatentService.loadName(patent1.getRightHolder()));
-                        columnDTO.setInventor(esPatentService.loadName(patent1.getInventor()));
-                        list.add(columnDTO);
-                    });
-                }
+                    }
+                    if (ObjectUtils.isNotEmpty(patent1.getApplicantAddr())) {
+                        PersonAddress applicantAddr = patent1.getApplicantAddr();
+                        columnDTO.setAppAddress(applicantAddr.getAddress());
+                        columnDTO.setApplicantCountry(applicantAddr.getCountry());
+                        columnDTO.setAppProvince(applicantAddr.getProvince());
+                        columnDTO.setAppCity(applicantAddr.getCity());
+                        columnDTO.setAppDistrict(applicantAddr.getDistrict());
+                    }
+                    if (ObjectUtils.isNotEmpty(patent1.getRightHolderAddr())) {
+                        PersonAddress rightAddr = patent1.getRightHolderAddr();
+                        columnDTO.setRightAddress(rightAddr.getAddress());
+                        columnDTO.setRightCountry(rightAddr.getCountry());
+                        columnDTO.setRightProvince(rightAddr.getProvince());
+                        columnDTO.setRightCity(rightAddr.getCity());
+                        columnDTO.setRightDistrict(rightAddr.getDistrict());
+                    }
+                    columnDTO.setApplicant(esPatentService.loadName(patent1.getApplicant()));
+                    columnDTO.setRightHolder(esPatentService.loadName(patent1.getRightHolder()));
+                    columnDTO.setInventor(esPatentService.loadName(patent1.getInventor()));
+                    list.add(columnDTO);
+                });
             }
         } else {
             List<Hit<Patent>> hits = response.hits().hits();