Skip to content

Commit c75bee0

Browse files
authored
Merge pull request #66 from Cenck/master
remove default sortMode in orderBy expression
2 parents 32224f6 + 8106779 commit c75bee0

File tree

4 files changed

+50
-1
lines changed

4 files changed

+50
-1
lines changed

elasticsearch-sql-core/src/main/java/io/github/iamazy/elasticsearch/dsl/sql/model/ElasticSqlParseResult.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,4 +270,25 @@ public String toPrettyDsl(SearchRequest searchRequest) {
270270
}
271271
}
272272

273+
public String toDsl() {
274+
this.getSearchRequest();
275+
if (searchRequest == null){
276+
return null;
277+
}
278+
return searchRequest.source().toString();
279+
}
280+
281+
public String toPrettyDsl() {
282+
try {
283+
this.getSearchRequest();
284+
if (searchRequest == null){
285+
return null;
286+
}
287+
Object o = CoreConstants.OBJECT_MAPPER.readValue(toDsl(searchRequest), Object.class);
288+
return CoreConstants.OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(o);
289+
} catch (IOException e) {
290+
throw new RuntimeException("Elasticsearch Dsl解析出错!!!");
291+
}
292+
}
293+
273294
}

elasticsearch-sql-core/src/main/java/io/github/iamazy/elasticsearch/dsl/sql/parser/QueryOrderByParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void parse(ElasticDslContext dslContext) {
3333
}else{
3434
sortOrder=SortOrder.DESC;
3535
}
36-
SortBuilder sortBuilder = SortBuilders.fieldSort(field).sortMode(SortMode.AVG).order(sortOrder);
36+
SortBuilder sortBuilder = SortBuilders.fieldSort(field).order(sortOrder);
3737
dslContext.getParseResult().getOrderBy().add(sortBuilder);
3838
}
3939
}

elasticsearch-sql-core/src/main/java/io/github/iamazy/elasticsearch/dsl/sql/parser/query/exact/BinaryQueryParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,9 @@ private boolean binaryContextMatch(ElasticsearchParser.ExpressionContext express
266266
if (expressionContext instanceof ElasticsearchParser.NameExprContext) {
267267
return true;
268268
}
269+
if (expressionContext instanceof ElasticsearchParser.InContext) {
270+
return true;
271+
}
269272
return expressionContext instanceof ElasticsearchParser.JoinContext;
270273
}
271274
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.iamazy.elasticsearch.dsl.sql;
2+
3+
import org.junit.Test;
4+
5+
public class FixedHistoryTest {
6+
7+
protected static ElasticSql2DslParser parser = new ElasticSql2DslParser();
8+
9+
@Test
10+
public void fixedOn20211221() {
11+
// 1. 去掉默认sortMode=avg ,默认为null
12+
// @io/github/iamazy/elasticsearch/dsl/sql/parser/QueryOrderByParser.java:36
13+
String fixDefaultSortMode = "select * from user order by id desc";
14+
System.out.println(parser.parse(fixDefaultSortMode).toDsl());
15+
16+
// 2. 使得 and or 右侧 支持 in not in 等表达式
17+
// @io/github/iamazy/elasticsearch/dsl/sql/parser/query/exact/BinaryQueryParser.java:138
18+
String fixAndOrRightReg = "select * from user where id = 1 and ( name not in ('zs' ) or age < 18)";
19+
System.out.println(parser.parse(fixAndOrRightReg).toDsl());
20+
21+
// 3. 添加无参toDsl
22+
// @io.github.iamazy.elasticsearch.dsl.sql.model.ElasticSqlParseResult.toDsl()
23+
}
24+
25+
}

0 commit comments

Comments
 (0)