mirror of
https://github.com/Graylog2/graylog2-server.git
synced 2026-03-13 09:32:21 +08:00
Saving reasonable refactorings from PR that has to be abandoned and … (#24356)
* Saving reasonable refactorigns from PR that has to be andandoned and closed * Deprecatig proper version of the class - OSv3 one...
This commit is contained in:
@@ -72,7 +72,7 @@ public class SearchRequestFactory {
|
||||
return searchSourceBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
public BoolQueryBuilder createQueryBuilder(final SearchCommand searchCommand) {
|
||||
final String query = QueryStringUtils.normalizeQuery(searchCommand.query());
|
||||
final QueryBuilder queryBuilder = translateQueryString(query);
|
||||
|
||||
@@ -88,6 +88,11 @@ public class SearchRequestFactory {
|
||||
.must(queryBuilder);
|
||||
filterQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
rangeQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
return filteredQueryBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
final BoolQueryBuilder filteredQueryBuilder = createQueryBuilder(searchCommand);
|
||||
|
||||
applyStreamsFilter(filteredQueryBuilder, searchCommand);
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ public class SearchRequestFactory {
|
||||
return searchSourceBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
public BoolQueryBuilder createQueryBuilder(final SearchCommand searchCommand) {
|
||||
final String query = QueryStringUtils.normalizeQuery(searchCommand.query());
|
||||
final QueryBuilder queryBuilder = translateQueryString(query);
|
||||
|
||||
@@ -88,6 +88,11 @@ public class SearchRequestFactory {
|
||||
.must(queryBuilder);
|
||||
filterQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
rangeQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
return filteredQueryBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
final BoolQueryBuilder filteredQueryBuilder = createQueryBuilder(searchCommand);
|
||||
|
||||
applyStreamsFilter(filteredQueryBuilder, searchCommand);
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ import static org.graylog.shaded.opensearch2.org.opensearch.index.query.QueryBui
|
||||
import static org.graylog.shaded.opensearch2.org.opensearch.index.query.QueryBuilders.queryStringQuery;
|
||||
import static org.graylog.shaded.opensearch2.org.opensearch.index.query.QueryBuilders.termsQuery;
|
||||
|
||||
@Deprecated
|
||||
public class SearchRequestFactory {
|
||||
private static final Sorting DEFAULT_SORTING = new Sorting("_doc", Sorting.Direction.ASC);
|
||||
private final boolean allowHighlighting;
|
||||
@@ -72,7 +73,7 @@ public class SearchRequestFactory {
|
||||
return searchSourceBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
private BoolQueryBuilder createQueryBuilder(final SearchCommand searchCommand) {
|
||||
final String query = QueryStringUtils.normalizeQuery(searchCommand.query());
|
||||
final QueryBuilder queryBuilder = translateQueryString(query);
|
||||
|
||||
@@ -88,6 +89,11 @@ public class SearchRequestFactory {
|
||||
.must(queryBuilder);
|
||||
filterQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
rangeQueryBuilder.ifPresent(filteredQueryBuilder::filter);
|
||||
return filteredQueryBuilder;
|
||||
}
|
||||
|
||||
public SearchSourceBuilder create(SearchCommand searchCommand) {
|
||||
final BoolQueryBuilder filteredQueryBuilder = createQueryBuilder(searchCommand);
|
||||
|
||||
applyStreamsFilter(filteredQueryBuilder, searchCommand);
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Graylog, Inc.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the Server Side Public License, version 1,
|
||||
* as published by MongoDB, Inc.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* Server Side Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the Server Side Public License
|
||||
* along with this program. If not, see
|
||||
* <http://www.mongodb.com/licensing/server-side-public-license>.
|
||||
*/
|
||||
package org.graylog.storage.opensearch3;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Named;
|
||||
import org.graylog.storage.search.SearchCommand;
|
||||
import org.graylog2.search.QueryStringUtils;
|
||||
import org.opensearch.client.opensearch._types.query_dsl.BoolQuery;
|
||||
import org.opensearch.client.opensearch._types.query_dsl.Query;
|
||||
import org.opensearch.client.opensearch._types.query_dsl.QueryBuilders;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Opensearch 3 version of {@link SearchRequestFactory}, that will eventually replace its deprecated predecessor.
|
||||
* Currently, it does not cover all the necessary functionality.
|
||||
*/
|
||||
public class SearchRequestFactoryOS {
|
||||
|
||||
private final boolean allowLeadingWildcardSearches;
|
||||
|
||||
@Inject
|
||||
public SearchRequestFactoryOS(@Named("allow_leading_wildcard_searches") final boolean allowLeadingWildcardSearches) {
|
||||
this.allowLeadingWildcardSearches = allowLeadingWildcardSearches;
|
||||
}
|
||||
|
||||
public Query createQueryBuilder(final SearchCommand searchCommand) {
|
||||
final String query = QueryStringUtils.normalizeQuery(searchCommand.query());
|
||||
BoolQuery.Builder topQueryBuilder;
|
||||
if (QueryStringUtils.isEmptyOrMatchAllQueryString(query)) {
|
||||
topQueryBuilder = QueryBuilders.bool()
|
||||
.must(
|
||||
QueryBuilders.matchAll()
|
||||
.build()
|
||||
.toQuery()
|
||||
);
|
||||
} else {
|
||||
topQueryBuilder = QueryBuilders.bool()
|
||||
.must(
|
||||
QueryBuilders.queryString()
|
||||
.query(query)
|
||||
.allowLeadingWildcard(allowLeadingWildcardSearches)
|
||||
.build()
|
||||
.toQuery()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
final Optional<BoolQuery.Builder> rangeQueryBuilder = searchCommand.range()
|
||||
.map(TimeRangeQueryFactory::createTimeRangeQuery)
|
||||
.map(rangeQuery -> QueryBuilders.bool().must(rangeQuery.toQuery()));
|
||||
final Optional<BoolQuery.Builder> filterQueryBuilder = searchCommand.filter()
|
||||
.filter(filter -> !QueryStringUtils.isEmptyOrMatchAllQueryString(filter))
|
||||
.map(filter -> QueryBuilders.queryString().query(filter).build().toQuery())
|
||||
.map(queryStringQuery -> QueryBuilders.bool().must(queryStringQuery));
|
||||
|
||||
|
||||
filterQueryBuilder.ifPresent(builder -> topQueryBuilder.filter(builder.build().toQuery()));
|
||||
rangeQueryBuilder.ifPresent(builder -> topQueryBuilder.filter(builder.build().toQuery()));
|
||||
return topQueryBuilder.build().toQuery();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user