Skip to content

Commit 86dd967

Browse files
committed
增加对histogram的支持
1 parent 92b21df commit 86dd967

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/main/java/org/nlpcn/es4sql/query/maker/AggMaker.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ private ValuesSourceAggregationBuilder<?> makeRangeGroup(MethodField field) thro
8383
return dateRange(field);
8484
case "month":
8585
return dateRange(field);
86+
case "histogram":
87+
return histogram(field);
8688
default:
8789
throw new SqlParseException("can define this method " + field);
8890
}
@@ -164,6 +166,52 @@ private DateHistogramBuilder dateHistogram(MethodField field) throws SqlParseExc
164166
return dateHistogram;
165167
}
166168

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+
167215
/**
168216
* 构建范围查询
169217
*

0 commit comments

Comments
 (0)