chennan 8 jaren geleden
bovenliggende
commit
499345ec17
19 gewijzigde bestanden met toevoegingen van 248 en 247 verwijderingen
  1. 2 2
      pom.xml
  2. 3 3
      src/main/java/org/es/jdbc/api/ElasticSingleConnectionDataSource.java
  3. 4 2
      src/main/java/org/es/jdbc/es/ElasticClientProxyProviderImpl.java
  4. 4 4
      src/main/java/org/es/jdbc/es/JdbcSearchActionExecutor.java
  5. 5 5
      src/main/java/org/es/sql/dsl/bean/ElasticSqlParseResult.java
  6. 9 7
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MatchAtomQueryParser.java
  7. 9 7
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MultiMatchAtomQueryParser.java
  8. 11 10
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/QueryStringAtomQueryParser.java
  9. 11 10
      src/main/java/org/es/sql/dsl/parser/query/method/fulltext/SimpleQueryStringAtomQueryParser.java
  10. 60 60
      src/main/java/org/es/sql/dsl/parser/query/method/script/ScriptAtomQueryParser.java
  11. 8 8
      src/main/java/org/es/sql/dsl/parser/query/method/term/TermsAtomQueryParser.java
  12. 11 10
      src/main/java/org/es/sql/dsl/parser/sql/AbstractQueryConditionParser.java
  13. 18 20
      src/main/java/org/es/sql/dsl/parser/sql/QueryGroupByParser.java
  14. 10 15
      src/main/java/org/es/sql/dsl/parser/sql/QueryOrderConditionParser.java
  15. 3 3
      src/main/java/org/es/sql/dsl/parser/sql/QuerySelectFieldListParser.java
  16. 2 5
      src/main/java/org/es/sql/dsl/parser/sql/sort/NvlMethodSortParser.java
  17. 58 58
      src/main/java/org/es/sql/dsl/parser/sql/sort/ScriptMethodSortParser.java
  18. 8 7
      src/main/java/org/es/sql/utils/Logger.java
  19. 12 11
      src/test/java/org/es/test/query/SqlParserWhereConditionTest.java

+ 2 - 2
pom.xml

@@ -102,8 +102,8 @@
 
 
         <dependency>
-            <groupId>org.elasticsearch</groupId>
-            <artifactId>elasticsearch</artifactId>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>transport</artifactId>
             <version>${elasticsearch.version}</version>
             <scope>compile</scope>
         </dependency>

+ 3 - 3
src/main/java/org/es/jdbc/api/ElasticSingleConnectionDataSource.java

@@ -3,7 +3,7 @@ package org.es.jdbc.api;
 
 import org.elasticsearch.client.Client;
 import org.es.jdbc.es.ElasticClientProvider;
-import org.es.sql.utils.Logger;
+import org.es.sql.utils.PersistLogger;
 
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
@@ -132,7 +132,7 @@ public class ElasticSingleConnectionDataSource extends DriverManagerDataSource i
                 this.target.close();
             }
             catch (Throwable ex) {
-                Logger.warn(this, "Could not close shared JDBC Connection", ex);
+                PersistLogger.warn(this, "Could not close shared JDBC Connection", ex);
             }
         }
 
@@ -141,7 +141,7 @@ public class ElasticSingleConnectionDataSource extends DriverManagerDataSource i
                 client.close();
             }
             catch (Exception ex) {
-                Logger.error(this, "Could not close elasticsearch client", ex);
+                PersistLogger.error(this, "Could not close elasticsearch client", ex);
             }
         }
     }

+ 4 - 2
src/main/java/org/es/jdbc/es/ElasticClientProxyProviderImpl.java

@@ -6,6 +6,7 @@ import org.elasticsearch.client.Client;
 import org.elasticsearch.client.transport.TransportClient;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.transport.InetSocketTransportAddress;
+import org.elasticsearch.transport.client.PreBuiltTransportClient;
 import org.es.jdbc.exception.BuildElasticClientException;
 import org.es.sql.utils.Constants;
 
@@ -46,7 +47,7 @@ public class ElasticClientProxyProviderImpl implements ElasticClientProvider {
     private ElasticClientProxy internalBuildElasticClient(String url) {
         String ipUrl = url.substring(ELASTIC_SEARCH_DRIVER_PREFIX.length());
 
-        Settings.Builder settingBuilder = Settings.settingsBuilder();
+        Settings.Builder settingBuilder = Settings.builder();
         settingBuilder.put("client.transport.sniff", true);
 
         String hostListString = ipUrl;
@@ -71,7 +72,8 @@ public class ElasticClientProxyProviderImpl implements ElasticClientProvider {
             }
         }
 
-        TransportClient transportClient = TransportClient.builder().settings(settingBuilder).build()
+
+        TransportClient transportClient = new PreBuiltTransportClient(settingBuilder.build())
                 .addTransportAddresses(addressList.toArray(new InetSocketTransportAddress[addressList.size()]));
 
         return (ElasticClientProxy) Proxy.newProxyInstance(ElasticClientProxy.class.getClassLoader(),

+ 4 - 4
src/main/java/org/es/jdbc/es/JdbcSearchActionExecutor.java

@@ -1,7 +1,7 @@
 package org.es.jdbc.es;
 
 import org.elasticsearch.action.*;
-import org.es.sql.utils.Logger;
+import org.es.sql.utils.PersistLogger;
 
 public class JdbcSearchActionExecutor {
 
@@ -44,13 +44,13 @@ public class JdbcSearchActionExecutor {
         return new ActionListener<Response>() {
             @Override
             public void onResponse(Response response) {
-                Logger.debug(this, String.format("[Search_Request] %s", requestBuilder.toString()));
-                Logger.debug(this, String.format("[Search_Response] %s", response.toString()));
+                PersistLogger.debug(this, String.format("[Search_Request] %s", requestBuilder.toString()));
+                PersistLogger.debug(this, String.format("[Search_Response] %s", response.toString()));
             }
 
             @Override
             public void onFailure(Exception ex) {
-                Logger.error(this, "Execute es req error!", ex);
+                PersistLogger.error(this, "Execute es req error!", ex);
             }
         };
     }

+ 5 - 5
src/main/java/org/es/sql/dsl/bean/ElasticSqlParseResult.java

@@ -39,7 +39,7 @@ public class ElasticSqlParseResult {
 
     private transient boolean isTopStatsAgg = false;
 
-    private transient List<AbstractAggregationBuilder> groupBy;
+    private transient List<AggregationBuilder> groupBy;
 
     public List<String> getQueryFieldList() {
         return queryFieldList;
@@ -121,11 +121,11 @@ public class ElasticSqlParseResult {
         this.routingBy = routingBy;
     }
 
-    public List<AbstractAggregationBuilder> getGroupBy() {
+    public List<AggregationBuilder> getGroupBy() {
         return groupBy;
     }
 
-    public void setGroupBy(List<AbstractAggregationBuilder> groupBy) {
+    public void setGroupBy(List<AggregationBuilder> groupBy) {
         this.groupBy = groupBy;
     }
 
@@ -183,7 +183,7 @@ public class ElasticSqlParseResult {
         if (CollectionUtils.isNotEmpty(groupBy)) {
             if (!getIsTopStatsAgg()) {
                 AggregationBuilder preAgg = null;
-                for (AbstractAggregationBuilder aggItem : groupBy) {
+                for (AggregationBuilder aggItem : groupBy) {
                     if (preAgg == null) {
                         preAgg = (AggregationBuilder) aggItem;
                         continue;
@@ -194,7 +194,7 @@ public class ElasticSqlParseResult {
                 requestBuilder.addAggregation(groupBy.get(0));
             }
             else {
-                for (AbstractAggregationBuilder aggItem : groupBy) {
+                for (AggregationBuilder aggItem : groupBy) {
                     requestBuilder.addAggregation(aggItem);
                 }
             }

+ 9 - 7
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MatchAtomQueryParser.java

@@ -5,6 +5,8 @@ import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
+import org.elasticsearch.index.query.Operator;
+import org.elasticsearch.index.search.MatchQuery;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
 import org.es.sql.dsl.listener.ParseActionListener;
 import org.es.sql.dsl.parser.query.method.AbstractFieldSpecificMethodQueryParser;
@@ -79,23 +81,23 @@ public class MatchAtomQueryParser extends AbstractFieldSpecificMethodQueryParser
         if (extraParamMap.containsKey("type")) {
             String val = extraParamMap.get("type");
             if ("BOOLEAN".equalsIgnoreCase(val)) {
-                matchQuery.type(MatchQueryBuilder.Type.BOOLEAN);
+                matchQuery.type(MatchQuery.Type.BOOLEAN);
             }
             if ("PHRASE".equalsIgnoreCase(val)) {
-                matchQuery.type(MatchQueryBuilder.Type.PHRASE);
+                matchQuery.type(MatchQuery.Type.PHRASE);
             }
             if ("PHRASE_PREFIX".equalsIgnoreCase(val)) {
-                matchQuery.type(MatchQueryBuilder.Type.PHRASE_PREFIX);
+                matchQuery.type(MatchQuery.Type.PHRASE_PREFIX);
             }
         }
 
         if (extraParamMap.containsKey("operator")) {
             String val = extraParamMap.get("operator");
             if ("AND".equalsIgnoreCase(val)) {
-                matchQuery.operator(MatchQueryBuilder.Operator.AND);
+                matchQuery.operator(Operator.AND);
             }
             if ("OR".equalsIgnoreCase(val)) {
-                matchQuery.operator(MatchQueryBuilder.Operator.OR);
+                matchQuery.operator(Operator.OR);
             }
         }
 
@@ -148,10 +150,10 @@ public class MatchAtomQueryParser extends AbstractFieldSpecificMethodQueryParser
         if (extraParamMap.containsKey("zero_terms_query")) {
             String val = extraParamMap.get("zero_terms_query");
             if ("NONE".equalsIgnoreCase(val)) {
-                matchQuery.zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.NONE);
+                matchQuery.zeroTermsQuery(MatchQuery.ZeroTermsQuery.NONE);
             }
             if ("ALL".equalsIgnoreCase(val)) {
-                matchQuery.zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.ALL);
+                matchQuery.zeroTermsQuery(MatchQuery.ZeroTermsQuery.ALL);
             }
         }
 

+ 9 - 7
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/MultiMatchAtomQueryParser.java

@@ -4,6 +4,8 @@ import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
+import org.elasticsearch.index.query.Operator;
+import org.elasticsearch.index.search.MatchQuery;
 import org.es.sql.dsl.bean.AtomQuery;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
 import org.es.sql.dsl.parser.query.method.MethodInvocation;
@@ -69,23 +71,23 @@ public class MultiMatchAtomQueryParser extends ParameterizedMethodQueryParser {
         if (extraParamMap.containsKey("type")) {
             String val = extraParamMap.get("type");
             if ("BOOLEAN".equalsIgnoreCase(val)) {
-                multiMatchQuery.type(MatchQueryBuilder.Type.BOOLEAN);
+                multiMatchQuery.type(MatchQuery.Type.BOOLEAN);
             }
             if ("PHRASE".equalsIgnoreCase(val)) {
-                multiMatchQuery.type(MatchQueryBuilder.Type.PHRASE);
+                multiMatchQuery.type(MatchQuery.Type.PHRASE);
             }
             if ("PHRASE_PREFIX".equalsIgnoreCase(val)) {
-                multiMatchQuery.type(MatchQueryBuilder.Type.PHRASE_PREFIX);
+                multiMatchQuery.type(MatchQuery.Type.PHRASE_PREFIX);
             }
         }
 
         if (extraParamMap.containsKey("operator")) {
             String val = extraParamMap.get("operator");
             if ("AND".equalsIgnoreCase(val)) {
-                multiMatchQuery.operator(MatchQueryBuilder.Operator.AND);
+                multiMatchQuery.operator(Operator.AND);
             }
             if ("OR".equalsIgnoreCase(val)) {
-                multiMatchQuery.operator(MatchQueryBuilder.Operator.OR);
+                multiMatchQuery.operator(Operator.OR);
             }
         }
 
@@ -138,10 +140,10 @@ public class MultiMatchAtomQueryParser extends ParameterizedMethodQueryParser {
         if (extraParamMap.containsKey("zero_terms_query")) {
             String val = extraParamMap.get("zero_terms_query");
             if ("NONE".equalsIgnoreCase(val)) {
-                multiMatchQuery.zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.NONE);
+                multiMatchQuery.zeroTermsQuery(MatchQuery.ZeroTermsQuery.NONE);
             }
             if ("ALL".equalsIgnoreCase(val)) {
-                multiMatchQuery.zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.ALL);
+                multiMatchQuery.zeroTermsQuery(MatchQuery.ZeroTermsQuery.ALL);
             }
         }
 

+ 11 - 10
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/QueryStringAtomQueryParser.java

@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 import org.elasticsearch.common.unit.Fuzziness;
+import org.elasticsearch.index.query.Operator;
 import org.es.sql.dsl.bean.AtomQuery;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
 import org.es.sql.dsl.parser.query.method.MethodInvocation;
@@ -125,10 +126,10 @@ public class QueryStringAtomQueryParser extends ParameterizedMethodQueryParser {
             queryStringQuery.allowLeadingWildcard(Boolean.parseBoolean(val));
         }
 
-        if (extraParamMap.containsKey("lowercase_expanded_terms")) {
-            String val = extraParamMap.get("lowercase_expanded_terms");
-            queryStringQuery.lowercaseExpandedTerms(Boolean.parseBoolean(val));
-        }
+//        if (extraParamMap.containsKey("lowercase_expanded_terms")) {
+//            String val = extraParamMap.get("lowercase_expanded_terms");
+//            queryStringQuery.lowercaseExpandedTerms(Boolean.parseBoolean(val));
+//        }
 
         if (extraParamMap.containsKey("enable_position_increments")) {
             String val = extraParamMap.get("enable_position_increments");
@@ -195,19 +196,19 @@ public class QueryStringAtomQueryParser extends ParameterizedMethodQueryParser {
             queryStringQuery.escape(Boolean.parseBoolean(val));
         }
 
-        if (extraParamMap.containsKey("locale")) {
-            String val = extraParamMap.get("locale");
-            queryStringQuery.locale(Locale.forLanguageTag(val));
-        }
+//        if (extraParamMap.containsKey("locale")) {
+//            String val = extraParamMap.get("locale");
+//            queryStringQuery.locale(Locale.forLanguageTag(val));
+//        }
 
         if (extraParamMap.containsKey("default_operator")) {
             String val = extraParamMap.get("default_operator");
 
             if ("AND".equalsIgnoreCase(val)) {
-                queryStringQuery.defaultOperator(QueryStringQueryBuilder.Operator.AND);
+                queryStringQuery.defaultOperator(Operator.AND);
             }
             if ("OR".equalsIgnoreCase(val)) {
-                queryStringQuery.defaultOperator(QueryStringQueryBuilder.Operator.OR);
+                queryStringQuery.defaultOperator(Operator.OR);
             }
         }
 

+ 11 - 10
src/main/java/org/es/sql/dsl/parser/query/method/fulltext/SimpleQueryStringAtomQueryParser.java

@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
+import org.elasticsearch.index.query.Operator;
 import org.es.sql.dsl.bean.AtomQuery;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
 import org.es.sql.dsl.parser.query.method.MethodInvocation;
@@ -105,10 +106,10 @@ public class SimpleQueryStringAtomQueryParser extends ParameterizedMethodQueryPa
             simpleStringQuery.analyzer(val);
         }
 
-        if (extraParamMap.containsKey("lowercase_expanded_terms")) {
-            String val = extraParamMap.get("lowercase_expanded_terms");
-            simpleStringQuery.lowercaseExpandedTerms(Boolean.parseBoolean(val));
-        }
+//        if (extraParamMap.containsKey("lowercase_expanded_terms")) {
+//            String val = extraParamMap.get("lowercase_expanded_terms");
+//            simpleStringQuery.lowercaseExpandedTerms(Boolean.parseBoolean(val));
+//        }
 
         if (extraParamMap.containsKey("boost")) {
             String val = extraParamMap.get("boost");
@@ -120,10 +121,10 @@ public class SimpleQueryStringAtomQueryParser extends ParameterizedMethodQueryPa
             simpleStringQuery.analyzeWildcard(Boolean.parseBoolean(val));
         }
 
-        if (extraParamMap.containsKey("locale")) {
-            String val = extraParamMap.get("locale");
-            simpleStringQuery.locale(Locale.forLanguageTag(val));
-        }
+//        if (extraParamMap.containsKey("locale")) {
+//            String val = extraParamMap.get("locale");
+//            simpleStringQuery.locale(Locale.forLanguageTag(val));
+//        }
 
         if (extraParamMap.containsKey("flags")) {
             String[] flags = extraParamMap.get("flags").split("\\|");
@@ -139,10 +140,10 @@ public class SimpleQueryStringAtomQueryParser extends ParameterizedMethodQueryPa
             String val = extraParamMap.get("default_operator");
 
             if ("AND".equalsIgnoreCase(val)) {
-                simpleStringQuery.defaultOperator(SimpleQueryStringBuilder.Operator.AND);
+                simpleStringQuery.defaultOperator(Operator.AND);
             }
             if ("OR".equalsIgnoreCase(val)) {
-                simpleStringQuery.defaultOperator(SimpleQueryStringBuilder.Operator.OR);
+                simpleStringQuery.defaultOperator(Operator.OR);
             }
         }
     }

+ 60 - 60
src/main/java/org/es/sql/dsl/parser/query/method/script/ScriptAtomQueryParser.java

@@ -1,60 +1,60 @@
-package org.es.sql.dsl.parser.query.method.script;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.script.Script;
-import org.elasticsearch.script.ScriptService;
-import org.es.sql.dsl.bean.AtomQuery;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
-
-import java.util.List;
-import java.util.Map;
-
-public class ScriptAtomQueryParser extends ParameterizedMethodQueryParser {
-
-    private static List<String> SCRIPT_METHOD = ImmutableList.of("script_query", "scriptQuery");
-
-    @Override
-    public List<String> defineMethodNames() {
-        return SCRIPT_METHOD;
-    }
-
-    @Override
-    protected String defineExtraParamString(MethodInvocation invocation) {
-        int extraParamIdx = 1;
-
-        return (invocation.getParameterCount() == extraParamIdx + 1)
-                ? invocation.getParameterAsString(extraParamIdx) : StringUtils.EMPTY;
-    }
-
-    @Override
-    public void checkMethodInvocation(MethodInvocation invocation) throws ElasticSql2DslException {
-        if (invocation.getParameterCount() != 1 && invocation.getParameterCount() != 2) {
-            throw new ElasticSql2DslException(
-                    String.format("[syntax error] There's no %s args method named [%s].",
-                            invocation.getParameterCount(), invocation.getMethodName()));
-        }
-
-        String script = invocation.getParameterAsString(0);
-        if (StringUtils.isEmpty(script)) {
-            throw new ElasticSql2DslException("[syntax error] Script can not be blank!");
-        }
-    }
-
-    @Override
-    protected AtomQuery parseMethodQueryWithExtraParams(MethodInvocation invocation, Map<String, String> extraParamMap) throws ElasticSql2DslException {
-        String script = invocation.getParameterAsString(0);
-
-        if (MapUtils.isNotEmpty(extraParamMap)) {
-            Map<String, Object> scriptParamMap = generateRawTypeParameterMap(invocation);
-            return new AtomQuery(QueryBuilders.scriptQuery(new Script(script, ScriptService.ScriptType.INLINE, null, scriptParamMap)));
-        }
-        return new AtomQuery(QueryBuilders.scriptQuery(new Script(script)));
-    }
-
-
-}
+//package org.es.sql.dsl.parser.query.method.script;
+//
+//import com.google.common.collect.ImmutableList;
+//import org.apache.commons.collections.MapUtils;
+//import org.apache.commons.lang.StringUtils;
+//import org.elasticsearch.index.query.QueryBuilders;
+//import org.elasticsearch.script.Script;
+//import org.elasticsearch.script.ScriptService;
+//import org.es.sql.dsl.bean.AtomQuery;
+//import org.es.sql.dsl.exception.ElasticSql2DslException;
+//import org.es.sql.dsl.parser.query.method.MethodInvocation;
+//import org.es.sql.dsl.parser.query.method.ParameterizedMethodQueryParser;
+//
+//import java.util.List;
+//import java.util.Map;
+//
+//public class ScriptAtomQueryParser extends ParameterizedMethodQueryParser {
+//
+//    private static List<String> SCRIPT_METHOD = ImmutableList.of("script_query", "scriptQuery");
+//
+//    @Override
+//    public List<String> defineMethodNames() {
+//        return SCRIPT_METHOD;
+//    }
+//
+//    @Override
+//    protected String defineExtraParamString(MethodInvocation invocation) {
+//        int extraParamIdx = 1;
+//
+//        return (invocation.getParameterCount() == extraParamIdx + 1)
+//                ? invocation.getParameterAsString(extraParamIdx) : StringUtils.EMPTY;
+//    }
+//
+//    @Override
+//    public void checkMethodInvocation(MethodInvocation invocation) throws ElasticSql2DslException {
+//        if (invocation.getParameterCount() != 1 && invocation.getParameterCount() != 2) {
+//            throw new ElasticSql2DslException(
+//                    String.format("[syntax error] There's no %s args method named [%s].",
+//                            invocation.getParameterCount(), invocation.getMethodName()));
+//        }
+//
+//        String script = invocation.getParameterAsString(0);
+//        if (StringUtils.isEmpty(script)) {
+//            throw new ElasticSql2DslException("[syntax error] Script can not be blank!");
+//        }
+//    }
+//
+//    @Override
+//    protected AtomQuery parseMethodQueryWithExtraParams(MethodInvocation invocation, Map<String, String> extraParamMap) throws ElasticSql2DslException {
+//        String script = invocation.getParameterAsString(0);
+//
+//        if (MapUtils.isNotEmpty(extraParamMap)) {
+//            Map<String, Object> scriptParamMap = generateRawTypeParameterMap(invocation);
+//            return new AtomQuery(QueryBuilders.scriptQuery(new Script(script, ScriptService.ScriptType.INLINE, null, scriptParamMap)));
+//        }
+//        return new AtomQuery(QueryBuilders.scriptQuery(new Script(script)));
+//    }
+//
+//
+//}

+ 8 - 8
src/main/java/org/es/sql/dsl/parser/query/method/term/TermsAtomQueryParser.java

@@ -89,14 +89,14 @@ public class TermsAtomQueryParser extends AbstractFieldSpecificMethodQueryParser
             String val = extraParamMap.get("boost");
             termsQuery.boost(Float.valueOf(val));
         }
-        if (extraParamMap.containsKey("minimum_should_match")) {
-            String val = extraParamMap.get("minimum_should_match");
-            termsQuery.minimumShouldMatch(val);
-        }
-        if (extraParamMap.containsKey("disable_coord")) {
-            String val = extraParamMap.get("disable_coord");
-            termsQuery.disableCoord(Boolean.parseBoolean(val));
-        }
+//        if (extraParamMap.containsKey("minimum_should_match")) {
+//            String val = extraParamMap.get("minimum_should_match");
+//            termsQuery.minimumShouldMatch(val);
+//        }
+//        if (extraParamMap.containsKey("disable_coord")) {
+//            String val = extraParamMap.get("disable_coord");
+//            termsQuery.disableCoord(Boolean.parseBoolean(val));
+//        }
 
 
     }

+ 11 - 10
src/main/java/org/es/sql/dsl/parser/sql/AbstractQueryConditionParser.java

@@ -5,6 +5,7 @@ import com.alibaba.druid.sql.ast.expr.*;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
+import org.apache.lucene.search.join.ScoreMode;
 import org.es.sql.dsl.bean.AtomQuery;
 import org.es.sql.dsl.bean.SQLCondition;
 import org.es.sql.dsl.enums.SQLBoolOperator;
@@ -16,7 +17,7 @@ import org.es.sql.dsl.parser.query.exact.BinaryAtomQueryParser;
 import org.es.sql.dsl.parser.query.exact.InListAtomQueryParser;
 import org.es.sql.dsl.parser.query.method.MethodInvocation;
 import org.es.sql.dsl.parser.query.method.fulltext.FullTextAtomQueryParser;
-import org.es.sql.dsl.parser.query.method.script.ScriptAtomQueryParser;
+//import org.es.sql.dsl.parser.query.method.script.ScriptAtomQueryParser;
 import org.es.sql.dsl.parser.query.method.term.TermLevelAtomQueryParser;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
@@ -27,7 +28,7 @@ import java.util.List;
 public abstract class AbstractQueryConditionParser implements QueryParser {
 
     private final TermLevelAtomQueryParser termLevelAtomQueryParser;
-    private final ScriptAtomQueryParser scriptAtomQueryParser;
+//    private final ScriptAtomQueryParser scriptAtomQueryParser;
     private final FullTextAtomQueryParser fullTextAtomQueryParser;
     private final BinaryAtomQueryParser binaryQueryParser;
     private final InListAtomQueryParser inListQueryParser;
@@ -40,7 +41,7 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
         inListQueryParser = new InListAtomQueryParser(parseActionListener);
         betweenAndQueryParser = new BetweenAndAtomQueryParser(parseActionListener);
 
-        scriptAtomQueryParser = new ScriptAtomQueryParser();
+//        scriptAtomQueryParser = new ScriptAtomQueryParser();
     }
 
     protected BoolQueryBuilder parseQueryConditionExpr(SQLExpr conditionExpr, String queryAs, Object[] sqlArgs) {
@@ -94,9 +95,9 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
 
             MethodInvocation methodInvocation = new MethodInvocation(methodQueryExpr, queryAs, sqlArgs);
 
-            if (scriptAtomQueryParser.isMatchMethodInvocation(methodInvocation)) {
-                return scriptAtomQueryParser.parseAtomMethodQuery(methodInvocation);
-            }
+//            if (scriptAtomQueryParser.isMatchMethodInvocation(methodInvocation)) {
+//                return scriptAtomQueryParser.parseAtomMethodQuery(methodInvocation);
+//            }
 
             if (fullTextAtomQueryParser.isFulltextAtomQuery(methodInvocation)) {
                 return fullTextAtomQueryParser.parseFullTextAtomQuery(methodQueryExpr, queryAs, sqlArgs);
@@ -152,10 +153,10 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
 
             if (nestedQueryList.size() == 1) {
                 if (operator == SQLBoolOperator.AND) {
-                    subBoolQuery.must(QueryBuilders.nestedQuery(nestedDocPrefix, nestedQueryList.get(0)));
+                    subBoolQuery.must(QueryBuilders.nestedQuery(nestedDocPrefix, nestedQueryList.get(0), ScoreMode.None));
                 }
                 if (operator == SQLBoolOperator.OR) {
-                    subBoolQuery.should(QueryBuilders.nestedQuery(nestedDocPrefix, nestedQueryList.get(0)));
+                    subBoolQuery.should(QueryBuilders.nestedQuery(nestedDocPrefix, nestedQueryList.get(0), ScoreMode.None));
                 }
                 continue;
             }
@@ -171,10 +172,10 @@ public abstract class AbstractQueryConditionParser implements QueryParser {
             }
 
             if (operator == SQLBoolOperator.AND) {
-                subBoolQuery.must(QueryBuilders.nestedQuery(nestedDocPrefix, boolNestedQuery));
+                subBoolQuery.must(QueryBuilders.nestedQuery(nestedDocPrefix, boolNestedQuery, ScoreMode.None));
             }
             if (operator == SQLBoolOperator.OR) {
-                subBoolQuery.should(QueryBuilders.nestedQuery(nestedDocPrefix, boolNestedQuery));
+                subBoolQuery.should(QueryBuilders.nestedQuery(nestedDocPrefix, boolNestedQuery, ScoreMode.None));
             }
 
         }

+ 18 - 20
src/main/java/org/es/sql/dsl/parser/sql/QueryGroupByParser.java

@@ -5,6 +5,13 @@ import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
 import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
+import org.elasticsearch.search.aggregations.AggregationBuilder;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.bucket.range.AbstractRangeBuilder;
+import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder;
+import org.elasticsearch.search.aggregations.bucket.range.date.DateRangeAggregationBuilder;
+import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
 import org.es.sql.dsl.bean.ElasticDslContext;
 import org.es.sql.dsl.bean.ElasticSqlQueryField;
@@ -14,19 +21,10 @@ import org.es.sql.dsl.exception.ElasticSql2DslException;
 import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
 import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
 import org.es.sql.dsl.listener.ParseActionListener;
-import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
-import org.elasticsearch.search.aggregations.AggregationBuilder;
-import org.elasticsearch.search.aggregations.AggregationBuilders;
-import org.elasticsearch.search.aggregations.bucket.range.AbstractRangeBuilder;
-import org.elasticsearch.search.aggregations.bucket.range.RangeBuilder;
-import org.elasticsearch.search.aggregations.bucket.range.date.DateRangeBuilder;
-import org.elasticsearch.search.aggregations.bucket.terms.Terms;
-import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
 
-import java.util.Date;
 import java.util.List;
 
 public class QueryGroupByParser implements QueryParser {
@@ -41,10 +39,10 @@ public class QueryGroupByParser implements QueryParser {
         this.parseActionListener = parseActionListener;
     }
 
-    public static Date getDateRangeVal(String date) {
+    public static DateTime getDateRangeVal(String date) {
         final String dateRangeValPattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
         DateTimeFormatter formatter = DateTimeFormat.forPattern(dateRangeValPattern);
-        return formatter.parseDateTime(date).toDate();
+        return formatter.parseDateTime(date);
     }
 
     @Override
@@ -55,7 +53,7 @@ public class QueryGroupByParser implements QueryParser {
         if (sqlGroupBy != null && CollectionUtils.isNotEmpty(sqlGroupBy.getItems())) {
             String queryAs = dslContext.getParseResult().getQueryAs();
 
-            List<AbstractAggregationBuilder> aggregationList = Lists.newArrayList();
+            List<AggregationBuilder> aggregationList = Lists.newArrayList();
             for (SQLExpr groupByItem : sqlGroupBy.getItems()) {
                 if (!(groupByItem instanceof SQLMethodInvokeExpr)) {
                     throw new ElasticSql2DslException("[syntax error] group by item must be an agg method call");
@@ -135,14 +133,14 @@ public class QueryGroupByParser implements QueryParser {
         return rangeSegmentList;
     }
 
-    private TermsBuilder createTermsBuilder(String termsFieldName, int termBuckets) {
+    private TermsAggregationBuilder createTermsBuilder(String termsFieldName, int termBuckets) {
         return AggregationBuilders.terms(AGG_BUCKET_KEY_PREFIX + termsFieldName)
                 .field(termsFieldName)
                 .minDocCount(1).shardMinDocCount(1)
                 .shardSize(termBuckets << 1).size(termBuckets).order(Terms.Order.count(false));
     }
 
-    private TermsBuilder createTermsBuilder(String termsFieldName) {
+    private TermsAggregationBuilder createTermsBuilder(String termsFieldName) {
         return createTermsBuilder(termsFieldName, MAX_GROUP_BY_SIZE);
     }
 
@@ -151,7 +149,7 @@ public class QueryGroupByParser implements QueryParser {
         RangeSegment.SegmentType segType = rangeSegments.get(0).getSegmentType();
 
         if (segType == RangeSegment.SegmentType.Numeric) {
-            RangeBuilder numericRangeBuilder = AggregationBuilders.range(AGG_BUCKET_KEY_PREFIX + rangeFieldName).field(rangeFieldName);
+            RangeAggregationBuilder numericRangeBuilder = AggregationBuilders.range(AGG_BUCKET_KEY_PREFIX + rangeFieldName).field(rangeFieldName);
             for (RangeSegment segment : rangeSegments) {
                 String key = String.format("%s-%s", segment.getFrom().toString(), segment.getTo().toString());
                 numericRangeBuilder.addRange(key, Double.valueOf(segment.getFrom().toString()), Double.valueOf(segment.getTo().toString()));
@@ -160,21 +158,21 @@ public class QueryGroupByParser implements QueryParser {
         }
 
         if (segType == RangeSegment.SegmentType.Date) {
-            DateRangeBuilder dateRangeBuilder = AggregationBuilders.dateRange(AGG_BUCKET_KEY_PREFIX + rangeFieldName).field(rangeFieldName);
+            DateRangeAggregationBuilder dateRangeBuilder = AggregationBuilders.dateRange(AGG_BUCKET_KEY_PREFIX + rangeFieldName).field(rangeFieldName);
             for (RangeSegment segment : rangeSegments) {
 
-                Date fromDate = getDateRangeVal(segment.getFrom().toString());
-                Date toDate = getDateRangeVal(segment.getTo().toString());
+                DateTime fromDate = getDateRangeVal(segment.getFrom().toString());
+                DateTime toDate = getDateRangeVal(segment.getTo().toString());
 
                 String key = String.format("[%s]-[%s]", formatDateRangeAggKey(fromDate), formatDateRangeAggKey(toDate));
-                dateRangeBuilder.addRange(key, segment.getFrom(), segment.getTo());
+                dateRangeBuilder.addRange(key, fromDate, toDate);
             }
             rangeBuilder = dateRangeBuilder;
         }
         return rangeBuilder;
     }
 
-    private String formatDateRangeAggKey(Date date) {
+    private String formatDateRangeAggKey(DateTime date) {
         final String dateRangeKeyPattern = "yyyy-MM-dd HH:mm:ss";
         return new DateTime(date).toString(dateRangeKeyPattern);
     }

+ 10 - 15
src/main/java/org/es/sql/dsl/parser/sql/QueryOrderConditionParser.java

@@ -1,31 +1,26 @@
 package org.es.sql.dsl.parser.sql;
 
-import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.SQLOrderBy;
 import com.alibaba.druid.sql.ast.SQLOrderingSpecification;
-import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
-import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
 import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
-import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
 import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
+import org.elasticsearch.search.sort.FieldSortBuilder;
+import org.elasticsearch.search.sort.SortBuilder;
+import org.elasticsearch.search.sort.SortBuilders;
+import org.elasticsearch.search.sort.SortOrder;
 import org.es.sql.druid.ElasticSqlSelectQueryBlock;
 import org.es.sql.dsl.bean.ElasticDslContext;
 import org.es.sql.dsl.bean.ElasticSqlQueryField;
-import org.es.sql.dsl.enums.QueryFieldType;
-import org.es.sql.dsl.enums.SortOption;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.helper.ElasticSqlArgTransferHelper;
-import org.es.sql.dsl.helper.ElasticSqlMethodInvokeHelper;
 import org.es.sql.dsl.listener.ParseActionListener;
-import org.elasticsearch.search.sort.FieldSortBuilder;
-import org.elasticsearch.search.sort.SortBuilder;
-import org.elasticsearch.search.sort.SortBuilders;
-import org.elasticsearch.search.sort.SortOrder;
 import org.es.sql.dsl.parser.query.method.MethodInvocation;
-import org.es.sql.dsl.parser.sql.sort.*;
+import org.es.sql.dsl.parser.sql.sort.ConditionSortBuilder;
+import org.es.sql.dsl.parser.sql.sort.MethodSortParser;
+import org.es.sql.dsl.parser.sql.sort.NvlMethodSortParser;
+import org.es.sql.dsl.parser.sql.sort.ParseSortBuilderHelper;
 
 import java.util.List;
 
@@ -39,8 +34,8 @@ public class QueryOrderConditionParser implements QueryParser {
         this.parseActionListener = parseActionListener;
 
         methodSortParsers = ImmutableList.of(
-                new NvlMethodSortParser(),
-                new ScriptMethodSortParser()
+                new NvlMethodSortParser()
+//                , new ScriptMethodSortParser()
         );
     }
 

+ 3 - 3
src/main/java/org/es/sql/dsl/parser/sql/QuerySelectFieldListParser.java

@@ -34,7 +34,7 @@ public class QuerySelectFieldListParser implements QueryParser {
         QueryFieldParser queryFieldParser = new QueryFieldParser();
         String queryAs = dslContext.getParseResult().getQueryAs();
 
-        List<AbstractAggregationBuilder> aggregations = Lists.newLinkedList();
+        List<AggregationBuilder> aggregations = Lists.newLinkedList();
         for (SQLSelectItem selectField : queryBlock.getSelectList()) {
 
             // agg method
@@ -61,11 +61,11 @@ public class QuerySelectFieldListParser implements QueryParser {
         }
 
         if (CollectionUtils.isNotEmpty(aggregations)) {
-            List<AbstractAggregationBuilder> groupByList = dslContext.getParseResult().getGroupBy();
+            List<AggregationBuilder> groupByList = dslContext.getParseResult().getGroupBy();
 
             if (CollectionUtils.isNotEmpty(groupByList)) {
                 AggregationBuilder lastLevelAggItem = (AggregationBuilder) groupByList.get(groupByList.size() - 1);
-                for (AbstractAggregationBuilder aggItem : aggregations) {
+                for (AggregationBuilder aggItem : aggregations) {
                     lastLevelAggItem.subAggregation(aggItem);
                 }
             }

+ 2 - 5
src/main/java/org/es/sql/dsl/parser/sql/sort/NvlMethodSortParser.java

@@ -3,10 +3,7 @@ package org.es.sql.dsl.parser.sql.sort;
 import com.alibaba.druid.sql.ast.SQLExpr;
 import com.alibaba.druid.sql.ast.expr.*;
 import com.google.common.collect.ImmutableList;
-import org.elasticsearch.search.sort.FieldSortBuilder;
-import org.elasticsearch.search.sort.SortBuilder;
-import org.elasticsearch.search.sort.SortBuilders;
-import org.elasticsearch.search.sort.SortOrder;
+import org.elasticsearch.search.sort.*;
 import org.es.sql.dsl.bean.ElasticSqlQueryField;
 import org.es.sql.dsl.enums.SortOption;
 import org.es.sql.dsl.exception.ElasticSql2DslException;
@@ -78,7 +75,7 @@ public class NvlMethodSortParser extends AbstractMethodSortParser {
 
                 if (sortMethodInvocation.getParameterCount() == 3) {
                     String sortModeText = sortMethodInvocation.getParameterAsString(2);
-                    fieldSortBuilder.sortMode(SortOption.get(sortModeText).mode());
+                    fieldSortBuilder.sortMode(SortMode.fromString(sortModeText));
                 }
                 return fieldSortBuilder;
             }

+ 58 - 58
src/main/java/org/es/sql/dsl/parser/sql/sort/ScriptMethodSortParser.java

@@ -1,58 +1,58 @@
-package org.es.sql.dsl.parser.sql.sort;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
-import org.elasticsearch.search.sort.SortBuilder;
-import org.elasticsearch.search.sort.SortBuilders;
-import org.elasticsearch.search.sort.SortOrder;
-import org.es.sql.dsl.exception.ElasticSql2DslException;
-import org.es.sql.dsl.parser.query.method.MethodInvocation;
-
-import java.util.List;
-import java.util.Map;
-
-public class ScriptMethodSortParser extends AbstractMethodSortParser {
-
-    public static final List<String> SCRIPT_SORT_METHOD = ImmutableList.of("script_sort", "scriptSort");
-
-    @Override
-    public List<String> defineMethodNames() {
-        return SCRIPT_SORT_METHOD;
-    }
-
-    @Override
-    protected String defineExtraParamString(MethodInvocation invocation) {
-        if (invocation.getParameterCount() == 3) {
-            return invocation.getParameterAsString(2);
-        }
-        return StringUtils.EMPTY;
-    }
-
-    @Override
-    public void checkMethodInvocation(MethodInvocation nvlMethodInvocation) throws ElasticSql2DslException {
-        if (!isMatchMethodInvocation(nvlMethodInvocation)) {
-            throw new ElasticSql2DslException("[syntax error] Sql sort condition only support script_query method invoke");
-        }
-
-        int methodParameterCount = nvlMethodInvocation.getParameterCount();
-        if (methodParameterCount != 2 && methodParameterCount != 3) {
-            throw new ElasticSql2DslException(String.format("[syntax error] There is no %s args method named script_sort", methodParameterCount));
-        }
-    }
-
-    @Override
-    protected SortBuilder parseMethodSortBuilderWithExtraParams(
-            MethodInvocation scriptSortMethodInvocation, SortOrder order, Map<String, Object> extraParamMap) throws ElasticSql2DslException {
-
-        String script = scriptSortMethodInvocation.getParameterAsString(0);
-        String type = scriptSortMethodInvocation.getParameterAsString(1);
-
-        if (MapUtils.isNotEmpty(extraParamMap)) {
-            Map<String, Object> scriptParamMap = generateRawTypeParameterMap(scriptSortMethodInvocation);
-            return SortBuilders.scriptSort(script, type).order(order).setParams(scriptParamMap);
-        }
-
-        return SortBuilders.scriptSort(script, type).order(order);
-    }
-}
+//package org.es.sql.dsl.parser.sql.sort;
+//
+//import com.google.common.collect.ImmutableList;
+//import org.apache.commons.collections.MapUtils;
+//import org.apache.commons.lang.StringUtils;
+//import org.elasticsearch.search.sort.SortBuilder;
+//import org.elasticsearch.search.sort.SortBuilders;
+//import org.elasticsearch.search.sort.SortOrder;
+//import org.es.sql.dsl.exception.ElasticSql2DslException;
+//import org.es.sql.dsl.parser.query.method.MethodInvocation;
+//
+//import java.util.List;
+//import java.util.Map;
+//
+//public class ScriptMethodSortParser extends AbstractMethodSortParser {
+//
+//    public static final List<String> SCRIPT_SORT_METHOD = ImmutableList.of("script_sort", "scriptSort");
+//
+//    @Override
+//    public List<String> defineMethodNames() {
+//        return SCRIPT_SORT_METHOD;
+//    }
+//
+//    @Override
+//    protected String defineExtraParamString(MethodInvocation invocation) {
+//        if (invocation.getParameterCount() == 3) {
+//            return invocation.getParameterAsString(2);
+//        }
+//        return StringUtils.EMPTY;
+//    }
+//
+//    @Override
+//    public void checkMethodInvocation(MethodInvocation nvlMethodInvocation) throws ElasticSql2DslException {
+//        if (!isMatchMethodInvocation(nvlMethodInvocation)) {
+//            throw new ElasticSql2DslException("[syntax error] Sql sort condition only support script_query method invoke");
+//        }
+//
+//        int methodParameterCount = nvlMethodInvocation.getParameterCount();
+//        if (methodParameterCount != 2 && methodParameterCount != 3) {
+//            throw new ElasticSql2DslException(String.format("[syntax error] There is no %s args method named script_sort", methodParameterCount));
+//        }
+//    }
+//
+//    @Override
+//    protected SortBuilder parseMethodSortBuilderWithExtraParams(
+//            MethodInvocation scriptSortMethodInvocation, SortOrder order, Map<String, Object> extraParamMap) throws ElasticSql2DslException {
+//
+//        String script = scriptSortMethodInvocation.getParameterAsString(0);
+//        String type = scriptSortMethodInvocation.getParameterAsString(1);
+//
+//        if (MapUtils.isNotEmpty(extraParamMap)) {
+//            Map<String, Object> scriptParamMap = generateRawTypeParameterMap(scriptSortMethodInvocation);
+//            return SortBuilders.scriptSort(script, type).order(order).setParams(scriptParamMap);
+//        }
+//
+//        return SortBuilders.scriptSort(script, type).order(order);
+//    }
+//}

+ 8 - 7
src/main/java/org/es/sql/utils/Logger.java

@@ -1,12 +1,13 @@
 package org.es.sql.utils;
 
 
-import org.slf4j.LoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
-public class Logger {
+public class PersistLogger {
     public static void warn(Object obj, String message, Throwable e) {
 
-        org.slf4j.Logger log = LoggerFactory.getLogger(obj.getClass().getName());
+        Logger log = LogManager.getLogger(obj.getClass().getName());
         if (log.isWarnEnabled()) {
             if (e == null) {
                 log.warn(message);
@@ -30,7 +31,7 @@ public class Logger {
     }
 
     public static void error(Object obj, String message, Throwable e) {
-        org.slf4j.Logger log = LoggerFactory.getLogger(obj instanceof Class ? ((Class) obj).getName() : obj.getClass().getName());
+        Logger log = LogManager.getLogger(obj instanceof Class ? ((Class) obj).getName() : obj.getClass().getName());
         if (log.isErrorEnabled()) {
             if (e == null) {
                 log.error(message);
@@ -46,7 +47,7 @@ public class Logger {
     }
 
     public static void info(Class clz, String message) {
-        org.slf4j.Logger log = LoggerFactory.getLogger(clz.getName());
+        Logger log = LogManager.getLogger(clz.getName());
         if (log.isInfoEnabled()) {
             log.info(message);
         }
@@ -63,7 +64,7 @@ public class Logger {
     }
 
     private static void trace(Class clz, String message) {
-        org.slf4j.Logger log = LoggerFactory.getLogger(clz.getName());
+        Logger log = LogManager.getLogger(clz.getName());
         if (log.isTraceEnabled()) {
             log.trace(message);
         }
@@ -74,7 +75,7 @@ public class Logger {
     }
 
     public static void debug(Class clz, String message) {
-        org.slf4j.Logger log = LoggerFactory.getLogger(clz.getName());
+        Logger log = LogManager.getLogger(clz.getName());
         if (log.isDebugEnabled()) {
             log.debug(message);
         }

+ 12 - 11
src/test/java/org/es/test/query/SqlParserWhereConditionTest.java

@@ -1,5 +1,6 @@
 package org.es.test.query;
 
+import org.apache.lucene.search.join.ScoreMode;
 import org.elasticsearch.action.search.SearchAction;
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.index.query.NestedQueryBuilder;
@@ -7,7 +8,7 @@ import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
-import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
+import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
 import org.es.sql.dsl.bean.ElasticSqlParseResult;
 import org.es.sql.dsl.parser.ElasticSql2DslParser;
 import org.es.sql.utils.ElasticMockClient;
@@ -40,19 +41,19 @@ public class SqlParserWhereConditionTest {
 
         sql = "select id,status from index.order t where $product.price='123.4'";
         parseResult = sql2DslParser.parse(sql);
-        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.termQuery("product.price", "123.4")));
+        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.termQuery("product.price", "123.4"), ScoreMode.None));
         Assert.assertEquals(parseResult.getWhereCondition().toString(), targetFilter.toString());
         System.out.println(parseResult.toDsl());
 
         sql = "select id,status from index.order t where t.$product.price='123.4'";
         parseResult = sql2DslParser.parse(sql);
-        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.termQuery("product.price", "123.4")));
+        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.termQuery("product.price", "123.4"), ScoreMode.None));
         Assert.assertEquals(parseResult.getWhereCondition().toString(), targetFilter.toString());
         System.out.println(parseResult.toDsl());
 
         sql = "select id,status from index.order t where abc.t.$product.price='123.4'";
         parseResult = sql2DslParser.parse(sql);
-        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("abc.t.product", QueryBuilders.termQuery("abc.t.product.price", "123.4")));
+        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("abc.t.product", QueryBuilders.termQuery("abc.t.product.price", "123.4"), ScoreMode.None));
         Assert.assertEquals(parseResult.getWhereCondition().toString(), targetFilter.toString());
         System.out.println(parseResult.toDsl());
 
@@ -82,7 +83,7 @@ public class SqlParserWhereConditionTest {
 
         sql = "select id,status from index.order t where $product.price > 123.4";
         parseResult = sql2DslParser.parse(sql);
-        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.rangeQuery("product.price").gt(123.4)));
+        targetFilter = QueryBuilders.boolQuery().must(QueryBuilders.nestedQuery("product", QueryBuilders.rangeQuery("product.price").gt(123.4), ScoreMode.None));
         Assert.assertEquals(parseResult.getWhereCondition().toString(), targetFilter.toString());
         System.out.println(parseResult.toDsl());
     }
@@ -146,10 +147,10 @@ public class SqlParserWhereConditionTest {
     public void testCreateSearchDsl() {
         SearchRequestBuilder searchReq = new SearchRequestBuilder(new ElasticMockClient(), SearchAction.INSTANCE);
 
-        NestedQueryBuilder categoryNameTerm = QueryBuilders.nestedQuery("bookCategories", QueryBuilders.termQuery("bookCategories.categoryName", "ART"));
-        NestedQueryBuilder bookAuthorNestedFilter = QueryBuilders.nestedQuery("bookCategories.books", QueryBuilders.termQuery("bookCategories.books.bookAuthor", "bibicx"));
-        NestedQueryBuilder bookPublisherCodeNestedFilter = QueryBuilders.nestedQuery("bookCategories.books", QueryBuilders.termQuery("bookCategories.books.bookPublisher.publisherCode", "PUB_03"));
-        NestedQueryBuilder bookProviderNameNestedFilter = QueryBuilders.nestedQuery("bookCategories.books.bookPublisher.bookProvider", QueryBuilders.termQuery("bookCategories.books.bookPublisher.bookProvider.providerName", "PVD_01"));
+        NestedQueryBuilder categoryNameTerm = QueryBuilders.nestedQuery("bookCategories", QueryBuilders.termQuery("bookCategories.categoryName", "ART"), ScoreMode.None);
+        NestedQueryBuilder bookAuthorNestedFilter = QueryBuilders.nestedQuery("bookCategories.books", QueryBuilders.termQuery("bookCategories.books.bookAuthor", "bibicx"), ScoreMode.None);
+        NestedQueryBuilder bookPublisherCodeNestedFilter = QueryBuilders.nestedQuery("bookCategories.books", QueryBuilders.termQuery("bookCategories.books.bookPublisher.publisherCode", "PUB_03"), ScoreMode.None);
+        NestedQueryBuilder bookProviderNameNestedFilter = QueryBuilders.nestedQuery("bookCategories.books.bookPublisher.bookProvider", QueryBuilders.termQuery("bookCategories.books.bookPublisher.bookProvider.providerName", "PVD_01"), ScoreMode.None);
 
         QueryBuilder topFilter = QueryBuilders.boolQuery().must(categoryNameTerm).must(bookAuthorNestedFilter).must(bookPublisherCodeNestedFilter).must(bookProviderNameNestedFilter);
 
@@ -163,8 +164,8 @@ public class SqlParserWhereConditionTest {
         searchReq.setSize(0);
 
         //NestedQueryBuilder categoryNameTerm = QueryBuilders.nestedQuery("bookCategories", QueryBuilders.termQuery("bookCategories.categoryName", "ART"));
-        TermsBuilder categoryNameAgg = AggregationBuilders.terms("agg_bookCategories.categoryName").field("bookCategories.categoryName");
-        AbstractAggregationBuilder topAgg = AggregationBuilders.nested("nested_bookCategories.categoryName").path("bookCategories").subAggregation(categoryNameAgg);
+        TermsAggregationBuilder categoryNameAgg = AggregationBuilders.terms("agg_bookCategories.categoryName").field("bookCategories.categoryName");
+        AbstractAggregationBuilder topAgg = AggregationBuilders.nested("nested_bookCategories.categoryName", "bookCategories").subAggregation(categoryNameAgg);
 
         AbstractAggregationBuilder rtnAgg = AggregationBuilders.reverseNested("rtn_root").subAggregation(AggregationBuilders.terms("agg_name").field("name"));
         categoryNameAgg.subAggregation(rtnAgg);