@@ -83,6 +83,8 @@ private ValuesSourceAggregationBuilder<?> makeRangeGroup(MethodField field) thro
83
83
return dateRange (field );
84
84
case "month" :
85
85
return dateRange (field );
86
+ case "histogram" :
87
+ return histogram (field );
86
88
default :
87
89
throw new SqlParseException ("can define this method " + field );
88
90
}
@@ -164,6 +166,52 @@ private DateHistogramBuilder dateHistogram(MethodField field) throws SqlParseExc
164
166
return dateHistogram ;
165
167
}
166
168
169
+ private HistogramBuilder histogram (MethodField field ) throws SqlParseException {
170
+ HistogramBuilder histogram = AggregationBuilders .histogram (field .getAlias ());
171
+ String value = null ;
172
+ for (KVValue kv : field .getParams ()) {
173
+ value = kv .value .toString ();
174
+ switch (kv .key .toLowerCase ()) {
175
+ case "interval" :
176
+ histogram .interval (Long .parseLong (value ));
177
+ break ;
178
+ case "field" :
179
+ histogram .field (value );
180
+ break ;
181
+ case "min_doc_count" :
182
+ histogram .minDocCount (Long .parseLong (value ));
183
+ break ;
184
+ case "extended_bounds" :
185
+ String [] bounds = value .split (":" );
186
+ if (bounds .length == 2 )
187
+ histogram .extendedBounds (Long .valueOf (bounds [0 ]), Long .valueOf (bounds [1 ]));
188
+ break ;
189
+ case "order" :
190
+ Histogram .Order order = null ;
191
+ switch (value ) {
192
+ case "key_desc" :
193
+ order = Histogram .Order .KEY_DESC ;
194
+ break ;
195
+ case "count_asc" :
196
+ order = Histogram .Order .COUNT_ASC ;
197
+ break ;
198
+ case "count_desc" :
199
+ order = Histogram .Order .COUNT_DESC ;
200
+ break ;
201
+ case "key_asc" :
202
+ default :
203
+ order = Histogram .Order .KEY_ASC ;
204
+ break ;
205
+ }
206
+ histogram .order (order );
207
+ break ;
208
+ default :
209
+ throw new SqlParseException ("histogram err or not define field " + kv .toString ());
210
+ }
211
+ }
212
+ return histogram ;
213
+ }
214
+
167
215
/**
168
216
* 构建范围查询
169
217
*
0 commit comments