Browse Source

过滤条件支持like模糊查询

Signed-off-by: AE86 <836391306@qq.com>
AE86 2 năm trước cách đây
mục cha
commit
74a3cf479b

+ 3 - 2
dbsyncer-connector/src/main/java/org/dbsyncer/connector/enums/FilterEnum.java

@@ -42,9 +42,10 @@ public enum FilterEnum {
      * 模糊匹配
      */
     LIKE("like", (value, filterValue) -> {
-        boolean startsWith = StringUtil.startsWith(filterValue, "%");
-        boolean endsWith = StringUtil.endsWith(filterValue, "%");
+        boolean startsWith = StringUtil.startsWith(filterValue, "%") || StringUtil.startsWith(filterValue, "*");
+        boolean endsWith = StringUtil.endsWith(filterValue, "%") || StringUtil.endsWith(filterValue, "*");
         String compareValue = StringUtil.replace(filterValue, "%", "");
+        compareValue = StringUtil.replace(compareValue, "*", "");
         // 模糊匹配
         if(startsWith && endsWith){
             return StringUtil.contains(value, compareValue);

+ 1 - 0
dbsyncer-connector/src/main/java/org/dbsyncer/connector/es/ESConnector.java

@@ -61,6 +61,7 @@ public final class ESConnector extends AbstractConnector implements Connector<ES
         filters.putIfAbsent(FilterEnum.LT.getName(), (builder, k, v) -> builder.filter(QueryBuilders.rangeQuery(k).lt(v)));
         filters.putIfAbsent(FilterEnum.GT_AND_EQUAL.getName(), (builder, k, v) -> builder.filter(QueryBuilders.rangeQuery(k).gte(v)));
         filters.putIfAbsent(FilterEnum.LT_AND_EQUAL.getName(), (builder, k, v) -> builder.filter(QueryBuilders.rangeQuery(k).lte(v)));
+        filters.putIfAbsent(FilterEnum.LIKE.getName(), (builder, k, v) -> builder.filter(QueryBuilders.wildcardQuery(k, v)));
     }
 
     @Override