use of org.graylog.plugins.views.search.searchtypes.pivot.Pivot in project graylog2-server by Graylog2.
the class ESPivot method processSeries.
private void processSeries(PivotResult.Row.Builder rowBuilder, SearchResult searchResult, ESGeneratedQueryContext queryContext, Pivot pivot, ArrayDeque<String> columnKeys, MetricAggregation aggregation, boolean rollup, String source) {
pivot.series().forEach(seriesSpec -> {
final ESPivotSeriesSpecHandler<? extends SeriesSpec, ? extends Aggregation> seriesHandler = seriesHandlers.get(seriesSpec.type());
final Aggregation series = seriesHandler.extractAggregationFromResult(pivot, seriesSpec, aggregation, queryContext);
seriesHandler.handleResult(pivot, seriesSpec, searchResult, series, this, queryContext).map(value -> {
columnKeys.addLast(value.id());
final PivotResult.Value v = PivotResult.Value.create(columnKeys, value.value(), rollup, source);
columnKeys.removeLast();
return v;
}).forEach(rowBuilder::addValue);
});
}
use of org.graylog.plugins.views.search.searchtypes.pivot.Pivot in project graylog2-server by Graylog2.
the class PivotAggregationSearch method getSourceStreamsQuery.
/**
* Returns the query to compute the sources streams for the aggregation.
*
* @param parameters processor parameters
* @return source streams query
*/
private Query getSourceStreamsQuery(AggregationEventProcessorParameters parameters) {
final Pivot pivot = Pivot.builder().id(STREAMS_PIVOT_ID).rollup(true).rowGroups(ImmutableList.of(Values.builder().limit(Integer.MAX_VALUE).field("streams").build())).series(ImmutableList.of(Count.builder().id(STREAMS_PIVOT_COUNT_ID).build())).build();
final Set<SearchType> searchTypes = Collections.singleton(pivot);
final Query.Builder queryBuilder = Query.builder().id(STREAMS_QUERY_ID).searchTypes(searchTypes).query(ElasticsearchQueryString.of(config.query())).timerange(parameters.timerange());
final Set<String> streams = getStreams(parameters);
if (!streams.isEmpty()) {
queryBuilder.filter(filteringForStreamIds(streams));
}
return queryBuilder.build();
}
use of org.graylog.plugins.views.search.searchtypes.pivot.Pivot in project graylog2-server by Graylog2.
the class CommandFactoryTest method throwsIfSearchTypeIsNotMessageList.
@Test
void throwsIfSearchTypeIsNotMessageList() {
Pivot p = Pivot.builder().id("pivot-id").series(newArrayList()).rollup(false).build();
Query q = org.graylog.plugins.views.search.TestData.validQueryBuilder().searchTypes(ImmutableSet.of(p)).build();
Search s = searchWithQueries(q);
assertThatExceptionOfType(ExportException.class).isThrownBy(() -> sut.buildWithMessageList(s, p.id(), ResultFormat.builder().build())).withMessageContaining("supported");
}
use of org.graylog.plugins.views.search.searchtypes.pivot.Pivot in project graylog2-server by Graylog2.
the class ESPivotTest method includesCustomNameinResultIfPresent.
@Test
public void includesCustomNameinResultIfPresent() throws InvalidRangeParametersException {
final ESPivot esPivot = new ESPivot(Collections.emptyMap(), Collections.emptyMap());
final Pivot pivot = Pivot.builder().id("somePivotId").name("customPivot").series(Collections.emptyList()).rollup(false).build();
final long documentCount = 424242;
when(queryResult.getTotal()).thenReturn(documentCount);
final MetricAggregation mockMetricAggregation = createTimestampRangeAggregations((double) new Date().getTime(), (double) new Date().getTime());
when(queryResult.getAggregations()).thenReturn(mockMetricAggregation);
when(query.effectiveTimeRange(pivot)).thenReturn(RelativeRange.create(300));
final SearchType.Result result = esPivot.doExtractResult(null, query, pivot, queryResult, null, null);
assertThat(result.name()).contains("customPivot");
}
use of org.graylog.plugins.views.search.searchtypes.pivot.Pivot in project graylog2-server by Graylog2.
the class ESPivot method processSeries.
private void processSeries(PivotResult.Row.Builder rowBuilder, SearchResponse searchResult, ESGeneratedQueryContext queryContext, Pivot pivot, ArrayDeque<String> columnKeys, HasAggregations aggregation, boolean rollup, String source) {
pivot.series().forEach(seriesSpec -> {
final ESPivotSeriesSpecHandler<? extends SeriesSpec, ? extends Aggregation> seriesHandler = seriesHandlers.get(seriesSpec.type());
final Aggregation series = seriesHandler.extractAggregationFromResult(pivot, seriesSpec, aggregation, queryContext);
seriesHandler.handleResult(pivot, seriesSpec, searchResult, series, this, queryContext).map(value -> {
columnKeys.addLast(value.id());
final PivotResult.Value v = PivotResult.Value.create(columnKeys, value.value(), rollup, source);
columnKeys.removeLast();
return v;
}).forEach(rowBuilder::addValue);
});
}
Aggregations