@@ -57,22 +57,7 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
57
57
58
58
59
59
//make groupby can reference to field alias
60
- boolean refrence = false ;
61
- for (Field temp : select .getFields ()) {
62
- if (temp instanceof MethodField && temp .getName ().equals ("script" )) {
63
- MethodField scriptField = (MethodField ) temp ;
64
- for (KVValue kv : scriptField .getParams ()) {
65
- if (kv .value .equals (field .getName ())) {
66
- lastAgg = aggMaker .makeGroupAgg (scriptField );
67
- refrence = true ;
68
- break ;
69
- }
70
- }
71
- }
72
- }
73
-
74
- if (!refrence ) lastAgg = aggMaker .makeGroupAgg (field );
75
-
60
+ lastAgg = getGroupAgg (field , select );
76
61
77
62
if (lastAgg != null && lastAgg instanceof TermsBuilder && !(field instanceof MethodField )) {
78
63
//if limit size is too small, increasing shard size is required
@@ -115,7 +100,7 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
115
100
116
101
for (int i = 1 ; i < groupBy .size (); i ++) {
117
102
field = groupBy .get (i );
118
- AggregationBuilder <?> subAgg = aggMaker . makeGroupAgg (field );
103
+ AggregationBuilder <?> subAgg = getGroupAgg (field , select );
119
104
if (subAgg instanceof TermsBuilder && !(field instanceof MethodField )) {
120
105
((TermsBuilder ) subAgg ).size (0 );
121
106
}
@@ -193,6 +178,26 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
193
178
SqlElasticSearchRequestBuilder sqlElasticRequestBuilder = new SqlElasticSearchRequestBuilder (request );
194
179
return sqlElasticRequestBuilder ;
195
180
}
181
+ private AggregationBuilder <?> getGroupAgg (Field field , Select select2 ) throws SqlParseException {
182
+ boolean refrence = false ;
183
+ AggregationBuilder <?> lastAgg = null ;
184
+ for (Field temp : select .getFields ()) {
185
+ if (temp instanceof MethodField && temp .getName ().equals ("script" )) {
186
+ MethodField scriptField = (MethodField ) temp ;
187
+ for (KVValue kv : scriptField .getParams ()) {
188
+ if (kv .value .equals (field .getName ())) {
189
+ lastAgg = aggMaker .makeGroupAgg (scriptField );
190
+ refrence = true ;
191
+ break ;
192
+ }
193
+ }
194
+ }
195
+ }
196
+
197
+ if (!refrence ) lastAgg = aggMaker .makeGroupAgg (field );
198
+
199
+ return lastAgg ;
200
+ }
196
201
197
202
private AbstractAggregationBuilder wrapNestedIfNeeded (AggregationBuilder nestedBuilder , boolean reverseNested ) {
198
203
if (!reverseNested ) return nestedBuilder ;
0 commit comments