Search in sources :

Example 16 with Query

use of org.graylog.plugins.views.search.Query in project graylog2-server by Graylog2.

the class ElasticsearchBackend method checkForFailedShards.

private Optional<ElasticsearchException> checkForFailedShards(MultiSearchResponse.Item multiSearchResponse) {
    if (multiSearchResponse.isFailure()) {
        return Optional.of(new ElasticsearchException(multiSearchResponse.getFailureMessage(), multiSearchResponse.getFailure()));
    }
    final SearchResponse searchResponse = multiSearchResponse.getResponse();
    if (searchResponse != null && searchResponse.getFailedShards() > 0) {
        final List<Throwable> shardFailures = Arrays.stream(searchResponse.getShardFailures()).map(ShardOperationFailedException::getCause).collect(Collectors.toList());
        final List<String> nonNumericFieldErrors = shardFailures.stream().filter(shardFailure -> shardFailure.getMessage().contains("Expected numeric type on field")).map(Throwable::getMessage).distinct().collect(Collectors.toList());
        if (!nonNumericFieldErrors.isEmpty()) {
            return Optional.of(new FieldTypeException("Unable to perform search query: ", nonNumericFieldErrors));
        }
        final List<String> errors = shardFailures.stream().map(Throwable::getMessage).distinct().collect(Collectors.toList());
        return Optional.of(new ElasticsearchException("Unable to perform search query: ", errors));
    }
    return Optional.empty();
}
Also used : ESSearchTypeHandler(org.graylog.storage.elasticsearch7.views.searchtypes.ESSearchTypeHandler) AndFilter(org.graylog.plugins.views.search.filter.AndFilter) ElasticsearchClient(org.graylog.storage.elasticsearch7.ElasticsearchClient) Arrays(java.util.Arrays) BackendQuery(org.graylog.plugins.views.search.engine.BackendQuery) QueryBackend(org.graylog.plugins.views.search.engine.QueryBackend) Provider(javax.inject.Provider) LoggerFactory(org.slf4j.LoggerFactory) FieldTypeException(org.graylog2.indexer.FieldTypeException) MultiSearchResponse(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.search.MultiSearchResponse) StreamFilter(org.graylog.plugins.views.search.filter.StreamFilter) Map(java.util.Map) IndicesOptions(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.support.IndicesOptions) SearchConfig(org.graylog.plugins.views.search.engine.SearchConfig) Set(java.util.Set) Collectors(java.util.stream.Collectors) BoolQueryBuilder(org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQueryBuilder) Objects(java.util.Objects) List(java.util.List) Filter(org.graylog.plugins.views.search.Filter) Optional(java.util.Optional) SearchResponse(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.search.SearchResponse) Query(org.graylog.plugins.views.search.Query) SearchTypeErrorParser(org.graylog.plugins.views.search.errors.SearchTypeErrorParser) HashMap(java.util.HashMap) ElasticsearchException(org.graylog2.indexer.ElasticsearchException) ShardOperationFailedException(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.ShardOperationFailedException) ArrayList(java.util.ArrayList) GlobalOverride(org.graylog.plugins.views.search.GlobalOverride) Inject(javax.inject.Inject) HashSet(java.util.HashSet) OrFilter(org.graylog.plugins.views.search.filter.OrFilter) SearchType(org.graylog.plugins.views.search.SearchType) QueryStringFilter(org.graylog.plugins.views.search.filter.QueryStringFilter) SearchTypeError(org.graylog.plugins.views.search.errors.SearchTypeError) QueryResult(org.graylog.plugins.views.search.QueryResult) TimeRangeQueryFactory(org.graylog.storage.elasticsearch7.TimeRangeQueryFactory) SearchJob(org.graylog.plugins.views.search.SearchJob) QueryBuilder(org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.QueryBuilder) SearchSourceBuilder(org.graylog.shaded.elasticsearch7.org.elasticsearch.search.builder.SearchSourceBuilder) Logger(org.slf4j.Logger) SearchRequest(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.search.SearchRequest) Maps(com.google.common.collect.Maps) QueryStringDecorators(org.graylog.plugins.views.search.elasticsearch.QueryStringDecorators) Named(com.google.inject.name.Named) IndexLookup(org.graylog.plugins.views.search.elasticsearch.IndexLookup) QueryBuilders(org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.QueryBuilders) Message(org.graylog2.plugin.Message) Collections(java.util.Collections) FieldTypeException(org.graylog2.indexer.FieldTypeException) ElasticsearchException(org.graylog2.indexer.ElasticsearchException) MultiSearchResponse(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.search.MultiSearchResponse) SearchResponse(org.graylog.shaded.elasticsearch7.org.elasticsearch.action.search.SearchResponse)

Example 17 with Query

use of org.graylog.plugins.views.search.Query in project graylog2-server by Graylog2.

the class QueryBackend method effectiveTimeRangeForResult.

default AbsoluteRange effectiveTimeRangeForResult(Query query, QueryResult queryResult) {
    final TimeRange effectiveTimeRange = query.globalOverride().flatMap(GlobalOverride::timerange).orElse(query.timerange());
    if (isAllMessages(effectiveTimeRange)) {
        final Optional<AbsoluteRange> effectiveRange = queryResult.searchTypes().values().stream().filter(result -> result instanceof PivotResult).map(result -> ((PivotResult) result).effectiveTimerange()).reduce((prev, next) -> {
            final DateTime from = prev.from().compareTo(next.from()) < 0 ? prev.from() : next.from();
            final DateTime to = prev.to().compareTo(next.to()) < 0 ? next.to() : prev.to();
            return AbsoluteRange.create(from, to);
        });
        if (effectiveRange.isPresent()) {
            return effectiveRange.get();
        }
    }
    return AbsoluteRange.create(effectiveTimeRange.getFrom(), effectiveTimeRange.getTo());
}
Also used : Period(org.joda.time.Period) SearchJob(org.graylog.plugins.views.search.SearchJob) Query(org.graylog.plugins.views.search.Query) Stopwatch(com.google.common.base.Stopwatch) PivotResult(org.graylog.plugins.views.search.searchtypes.pivot.PivotResult) DateTime(org.joda.time.DateTime) Set(java.util.Set) RelativeRange(org.graylog2.plugin.indexer.searches.timeranges.RelativeRange) GlobalOverride(org.graylog.plugins.views.search.GlobalOverride) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) SearchType(org.graylog.plugins.views.search.SearchType) IllegalTimeRangeException(org.graylog.plugins.views.search.errors.IllegalTimeRangeException) AbsoluteRange(org.graylog2.plugin.indexer.searches.timeranges.AbsoluteRange) Optional(java.util.Optional) SearchTypeError(org.graylog.plugins.views.search.errors.SearchTypeError) QueryResult(org.graylog.plugins.views.search.QueryResult) TimeRange(org.graylog2.plugin.indexer.searches.timeranges.TimeRange) QueryError(org.graylog.plugins.views.search.errors.QueryError) TimeRange(org.graylog2.plugin.indexer.searches.timeranges.TimeRange) PivotResult(org.graylog.plugins.views.search.searchtypes.pivot.PivotResult) AbsoluteRange(org.graylog2.plugin.indexer.searches.timeranges.AbsoluteRange) DateTime(org.joda.time.DateTime)

Example 18 with Query

use of org.graylog.plugins.views.search.Query in project graylog2-server by Graylog2.

the class SearchResourceTest method mockNewSearch.

private Search mockNewSearch() {
    final Search search = mock(Search.class);
    when(search.addStreamsToQueriesWithoutStreams(any())).thenReturn(search);
    final String streamId = "streamId";
    final Query query = mock(Query.class);
    when(query.id()).thenReturn("queryId");
    when(query.usedStreamIds()).thenReturn(ImmutableSet.of(streamId));
    when(query.searchTypes()).thenReturn(ImmutableSet.of());
    when(search.queries()).thenReturn(ImmutableSet.of(query));
    return search;
}
Also used : Query(org.graylog.plugins.views.search.Query) Search(org.graylog.plugins.views.search.Search)

Example 19 with Query

use of org.graylog.plugins.views.search.Query in project graylog2-server by Graylog2.

the class CommandFactoryTest method takesStreamsFromQueryIfEmptyOnSearchType.

@Test
void takesStreamsFromQueryIfEmptyOnSearchType() {
    MessageList ml = MessageList.builder().id("ml-id").build();
    Query q = validQueryBuilderWith(ml).filter(streamFilter("stream-3")).build();
    Search s = searchWithQueries(q);
    ExportMessagesCommand command = buildFrom(s, ml.id());
    assertThat(command.streams()).isEqualTo(q.usedStreamIds());
}
Also used : Query(org.graylog.plugins.views.search.Query) Search(org.graylog.plugins.views.search.Search) MessageList(org.graylog.plugins.views.search.searchtypes.MessageList) Test(org.junit.jupiter.api.Test)

Example 20 with Query

use of org.graylog.plugins.views.search.Query in project graylog2-server by Graylog2.

the class CommandFactoryTest method takesDefaultFieldsIfNotSpecifiedInResultFormat.

@Test
void takesDefaultFieldsIfNotSpecifiedInResultFormat() {
    MessageList ml = MessageList.builder().id("ml-id").build();
    Query q = validQueryBuilderWith(ml).build();
    Search s = searchWithQueries(q);
    ExportMessagesCommand command = buildFrom(s, ml.id(), ResultFormat.builder().build());
    assertThat(command.fieldsInOrder()).isEqualTo(DEFAULT_FIELDS);
}
Also used : Query(org.graylog.plugins.views.search.Query) Search(org.graylog.plugins.views.search.Search) MessageList(org.graylog.plugins.views.search.searchtypes.MessageList) Test(org.junit.jupiter.api.Test)

Aggregations

Query (org.graylog.plugins.views.search.Query)80 Search (org.graylog.plugins.views.search.Search)41 SearchJob (org.graylog.plugins.views.search.SearchJob)35 Test (org.junit.Test)35 SearchType (org.graylog.plugins.views.search.SearchType)27 Test (org.junit.jupiter.api.Test)21 MessageList (org.graylog.plugins.views.search.searchtypes.MessageList)20 Set (java.util.Set)19 QueryStringDecorators (org.graylog.plugins.views.search.elasticsearch.QueryStringDecorators)19 Collections (java.util.Collections)17 SearchConfig (org.graylog.plugins.views.search.engine.SearchConfig)17 QueryResult (org.graylog.plugins.views.search.QueryResult)16 ElasticsearchQueryString (org.graylog.plugins.views.search.elasticsearch.ElasticsearchQueryString)16 Collectors (java.util.stream.Collectors)15 IndexLookup (org.graylog.plugins.views.search.elasticsearch.IndexLookup)15 List (java.util.List)14 Map (java.util.Map)14 TimeRange (org.graylog2.plugin.indexer.searches.timeranges.TimeRange)14 ImmutableSet (com.google.common.collect.ImmutableSet)12 Optional (java.util.Optional)11