/** * 构建范围查询 * * @param field * @return */ private RangeAggregationBuilder rangeBuilder(MethodField field) { // ignore alias param LinkedList<KVValue> params = field.getParams().stream().filter(kv -> !"alias".equals(kv.key)).collect(Collectors.toCollection(LinkedList::new)); String fieldName = params.poll().toString(); double[] ds = Util.KV2DoubleArr(params); RangeAggregationBuilder range = AggregationBuilders.range(field.getAlias()).field(fieldName); for (int i = 1; i < ds.length; i++) { range.addRange(ds[i - 1], ds[i]); } return range; }
private static AbstractAggregationBuilder createRangeFacet(String metricKey, Double... thresholds) { RangeAggregationBuilder rangeAgg = AggregationBuilders.range(metricKey) .field(FIELD_MEASURES_VALUE); final int lastIndex = thresholds.length - 1; IntStream.range(0, thresholds.length) .forEach(i -> { if (i == 0) { rangeAgg.addUnboundedTo(thresholds[0]); rangeAgg.addRange(thresholds[0], thresholds[1]); } else if (i == lastIndex) { rangeAgg.addUnboundedFrom(thresholds[lastIndex]); } else { rangeAgg.addRange(thresholds[i], thresholds[i + 1]); } }); return AggregationBuilders.nested("nested_" + metricKey, FIELD_MEASURES) .subAggregation( AggregationBuilders.filter("filter_" + metricKey, termsQuery(FIELD_MEASURES_KEY, metricKey)) .subAggregation(rangeAgg)); }
@Override public AbstractAggregationBuilder getFacet() { Assert.notNull(getName(), "Facet name can't be a null !!!"); RangeAggregationBuilder rangeBuilder = AggregationBuilders.range(getName()); final String field = !StringUtils.isEmpty(keyField) ? keyField : this.field; rangeBuilder.field(field); for (Entry entry : entries) { DoubleEntry doubleEntry = (DoubleEntry) entry; rangeBuilder.addRange(validateValue(doubleEntry.getFrom(), Double.NEGATIVE_INFINITY), validateValue(doubleEntry.getTo(), Double.POSITIVE_INFINITY)); } rangeBuilder.subAggregation(AggregationBuilders.extendedStats(INTERNAL_STATS).field(field)); if(!StringUtils.isEmpty(valueField)){ rangeBuilder.subAggregation(AggregationBuilders.sum(RANGE_INTERNAL_SUM).field(valueField)); } return rangeBuilder; }
/** * 构建范围查询 * * @param field * @return */ private RangeAggregationBuilder rangeBuilder(MethodField field) { // ignore alias param LinkedList<KVValue> params = field.getParams().stream().filter(kv -> !"alias".equals(kv.key)).collect(Collectors.toCollection(LinkedList::new)); String fieldName = params.poll().toString(); double[] ds = Util.KV2DoubleArr(params); RangeAggregationBuilder range = AggregationBuilders.range(field.getAlias()).field(fieldName); for (int i = 1; i < ds.length; i++) { range.addRange(ds[i - 1], ds[i]); } return range; }
private AbstractRangeBuilder createRangeBuilder(String rangeFieldName, List<RangeSegment> rangeSegments) { AbstractRangeBuilder rangeBuilder = null; RangeSegment.SegmentType segType = rangeSegments.get(0).getSegmentType(); if (segType == RangeSegment.SegmentType.Numeric) { 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())); } rangeBuilder = numericRangeBuilder; } if (segType == RangeSegment.SegmentType.Date) { DateRangeAggregationBuilder dateRangeBuilder = AggregationBuilders.dateRange(AGG_BUCKET_KEY_PREFIX + rangeFieldName).field(rangeFieldName); for (RangeSegment segment : rangeSegments) { 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, fromDate, toDate); } rangeBuilder = dateRangeBuilder; } return rangeBuilder; }
private static AbstractAggregationBuilder createRangeFacet(String metricKey, Double... thresholds) { RangeAggregationBuilder rangeAgg = AggregationBuilders.range(metricKey) .field(FIELD_MEASURES_VALUE); final int lastIndex = thresholds.length - 1; IntStream.range(0, thresholds.length) .forEach(i -> { if (i == 0) { rangeAgg.addUnboundedTo(thresholds[0]); rangeAgg.addRange(thresholds[0], thresholds[1]); } else if (i == lastIndex) { rangeAgg.addUnboundedFrom(thresholds[lastIndex]); } else { rangeAgg.addRange(thresholds[i], thresholds[i + 1]); } }); return AggregationBuilders.nested("nested_" + metricKey, FIELD_MEASURES) .subAggregation( AggregationBuilders.filter("filter_" + metricKey, termsQuery(FIELD_MEASURES_KEY, metricKey)) .subAggregation(rangeAgg)); }
@JsonIgnore @Override public RangeAggregationBuilder getEsAggregate() { RangeAggregationBuilder ret = AggregationBuilders.range(getId()).field(getField()); for (AggregateRangeDefinition range : getRanges()) { if (range.getFrom() != null) { if (range.getTo() != null) { ret.addRange(range.getKey(), range.getFrom(), range.getTo()); } else { ret.addUnboundedFrom(range.getKey(), range.getFrom()); } } else if (range.getTo() != null) { ret.addUnboundedTo(range.getKey(), range.getTo()); } } return ret; }
RangeAggregationBuilder rangeBuilder = AggregationBuilders.range(aggName); rangeBuilder.field(propertyName);
RangeAggregationBuilder rangeBuilder = AggregationBuilders.range(aggName); rangeBuilder.field(propertyName);
RangeBuilder rangeBuilder = AggregationBuilders.range(aggName); rangeBuilder.field(propertyName);
RangeBuilder rangeBuilder = AggregationBuilders.range(aggName); rangeBuilder.field(propertyName);