/** * Get AggregationBuilder using dateRange with proper limits from parameters. * @param fieldName Name of field to time restrict * @param fromDate Start date for restriction * @param toDate End date for restriction * @return AggregationBuilder with required configuration */ private static DateRangeBuilder getDateRangeAggregationBuilder(String fieldName, String fromDate, String toDate) { DateRangeBuilder dateRangeAggregation = AggregationBuilders.dateRange("by_date").field(fieldName); if (fromDate == null && toDate != null) { dateRangeAggregation = dateRangeAggregation.addUnboundedTo(toDate); } else if (toDate == null && fromDate != null) { dateRangeAggregation = dateRangeAggregation.addUnboundedFrom(fromDate); } else { dateRangeAggregation = dateRangeAggregation.addRange(fromDate, toDate); } return dateRangeAggregation; }
/** * Get AggregationBuilder for specific time range. * @param classifierName Name of classifier * @param fromDate Start date for creation of row * @param toDate End date for creation of row * @return AggregationBuilder with required configuration */ private static DateRangeBuilder getClassifierAggregationBuilder(String classifierName, String fromDate, String toDate) { return getDateRangeAggregationBuilder("created_at", fromDate, toDate) .subAggregation(getClassifierAggregationBuilder(classifierName)); }
if (propertyDataType == Date.class) { DateRangeBuilder dateRangeBuilder = AggregationBuilders.dateRange(aggName); dateRangeBuilder.field(propertyName); dateRangeBuilder.format(agg.getFormat()); dateRangeBuilder.addRange(range.getKey(), range.getFrom(), range.getTo()); dateRangeBuilder.subAggregation(subAgg);
/** * Same as {@link #addRange(String, Object, Object)} but the key will be * automatically generated based on <code>from</code> and <code>to</code>. */ public DateRangeBuilder addRange(Object from, Object to) { return addRange(null, from, to); }
/** * Same as {@link #addUnboundedFrom(String, Object)} but the key will be * computed automatically. */ public DateRangeBuilder addUnboundedFrom(Object from) { return addUnboundedFrom(null, from); }
/** * Same as {@link #addUnboundedTo(String, Object)} but the key will be * computed automatically. */ public DateRangeBuilder addUnboundedTo(Object to) { return addUnboundedTo(null, to); }
/** * Create a new {@link DateRangeBuilder} aggregation with the given name. */ public static DateRangeBuilder dateRange(String name) { return new DateRangeBuilder(name); }
if (propertyDataType == Date.class) { DateRangeBuilder dateRangeBuilder = AggregationBuilders.dateRange(aggName); dateRangeBuilder.field(propertyName); dateRangeBuilder.format(agg.getFormat()); dateRangeBuilder.addRange(range.getKey(), range.getFrom(), range.getTo()); dateRangeBuilder.subAggregation(subAgg);
/** * Get AggregationBuilder by country for limited time range. * @param fieldName Name of field containing country code. * @param classifierName Name of classifier * @param startDate Start date for creation of row * @param endDate End date for creation of row * @return AggregationBuilder with required configuration */ private static DateRangeBuilder getClassifierAggregationBuilderByCountry(String fieldName, String classifierName, String startDate, String endDate) { return getDateRangeAggregationBuilder("created_at", startDate, endDate) .subAggregation(getClassifierAggregationBuilderByCountry(fieldName, classifierName)); }