use of org.opensearch.search.aggregations.bucket.histogram.ParsedDateHistogram in project kestra by kestra-io.
the class ElasticSearchExecutionRepository method dailyStatistics.
@Override
public List<DailyExecutionStatistics> dailyStatistics(@Nullable String query, @Nullable ZonedDateTime startDate, @Nullable ZonedDateTime endDate, boolean isTaskRun) {
if (startDate == null) {
startDate = ZonedDateTime.now().minusDays(30);
}
if (endDate == null) {
endDate = ZonedDateTime.now();
}
AggregationBuilder agg = dailyExecutionStatisticsFinalAgg(startDate, endDate, isTaskRun);
if (isTaskRun) {
agg = AggregationBuilders.nested(NESTED_AGG, "taskRunList").subAggregation(agg);
}
SearchSourceBuilder sourceBuilder = this.searchSource(this.dateFilters(query, startDate, endDate), Optional.of(Collections.singletonList(agg)), null);
try {
SearchRequest searchRequest = searchRequest(INDEX_NAME, sourceBuilder, false);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
ParsedDateHistogram groupAgg = isTaskRun ? ((ParsedNested) searchResponse.getAggregations().get(NESTED_AGG)).getAggregations().get(DATE_AGG) : searchResponse.getAggregations().get(DATE_AGG);
List<DailyExecutionStatistics> result = new ArrayList<>();
groupAgg.getBuckets().forEach(bucket -> {
ParsedStringTerms countAgg = bucket.getAggregations().get(COUNT_AGG);
ParsedStats durationAgg = bucket.getAggregations().get(DURATION_AGG);
final LocalDate currentStartDate = LocalDate.parse(bucket.getKeyAsString(), DateTimeFormatter.ISO_LOCAL_DATE);
result.add(dailyExecutionStatisticsMap(countAgg, durationAgg, currentStartDate));
});
return result;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Aggregations