zero 1 jaar geleden
bovenliggende
commit
a6c0438d86

+ 69 - 8
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/DateQueryBuilder.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.factorys.EsBuilderFactory;
 
 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.springframework.stereotype.Component;
 
 import java.text.ParseException;
@@ -20,6 +21,7 @@ public class DateQueryBuilder implements IQueryBuilder {
     public static final int MONTH = 7;
     public static final int DAYONE = 8;
     public static final int DAY = 10;
+    public static final String EQ = "=";
 
 
     @Override
@@ -34,11 +36,31 @@ public class DateQueryBuilder implements IQueryBuilder {
                 String yearTime = String.valueOf(calendar.getTime().getTime());
                 calendar.add(Calendar.YEAR, 1);
                 String yearNextTime = String.valueOf(calendar.getTime().getTime());
-                query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
-                        .range(range -> range.field(field).from(yearTime.substring(0,10)).to(yearNextTime.substring(0,10)));
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(yearTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(yearTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(yearTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime.substring(0, 10))));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime.substring(0, 10))).lte(JsonData.of(yearNextTime.substring(0, 10))));
+                        break;
+                }
             } else if (value.length() == MONTH || value.length() == MONTHONE) {
                 Date month = new Date();
-                if (value.contains("_")) {
+                if (value.contains("-")) {
                     SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
                     month = format2.parse(value);
                 } else if (value.contains("/")) {
@@ -52,11 +74,31 @@ public class DateQueryBuilder implements IQueryBuilder {
                 String monthTime = String.valueOf(calendar.getTime().getTime());
                 calendar.add(Calendar.MONTH, 1);
                 String monthNextTime = String.valueOf(calendar.getTime().getTime());
-                query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
-                        .range(range -> range.field(field).from(monthTime.substring(0,10)).to(monthNextTime.substring(0,10)));
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(monthTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(monthTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(monthTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime.substring(0, 10))));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime.substring(0, 10))).lte(JsonData.of(monthNextTime.substring(0, 10))));
+                        break;
+                }
             } else if (value.length() == DAY || value.length() == DAYONE) {
                 Date day = new Date();
-                if (value.contains("_")) {
+                if (value.contains("-")) {
                     SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
                     day = format2.parse(value);
                 } else if (value.contains("/")) {
@@ -66,9 +108,28 @@ public class DateQueryBuilder implements IQueryBuilder {
                     SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
                     day = format1.parse(value);
                 }
-                SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
                 String dayTime = String.valueOf(day.getTime());
-                query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0, 10)));
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(dayTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(dayTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(dayTime.substring(0, 10))));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime.substring(0, 10))));
+                        break;
+                    default:
+                        query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0, 10)));
+                        break;
+                }
             }
         }
         return query;

+ 54 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/WildcardQueryBuilder.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class WildcardQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        String str = "*";
+        String s = str.concat(value).concat("*");
+        return QueryBuilders.wildcard(i -> i.field(field).value(s));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+}

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

@@ -123,8 +123,8 @@ public class EventServiceTests {
 //        mapRequest.setSize(50L);
 //        mapRequest.setProjectId(1);
         StringRequest stringRequest = new StringRequest();
-        stringRequest.setSearchQuery("patentNo=CN201199922Y");
-//        stringRequest.setSearchQuery("publicDate=20090304");
+//        stringRequest.setSearchQuery("patentNo=CN201199922Y");
+        stringRequest.setSearchQuery("publicDate<=200903");
 //        stringRequest.setSearchQuery("patentNo=CN201199922Y and (simpleFamilyNum>1 or simpleFamilyNum=0)");
         stringRequest.setCurrent(0L);
         stringRequest.setSize(50L);