mirror of
https://github.com/Graylog2/graylog2-server.git
synced 2026-03-13 09:32:21 +08:00
Support overriding sorts in events search type. (#18827)
This commit is contained in:
@@ -31,6 +31,7 @@ import org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.BoolQuery
|
||||
import org.graylog.shaded.elasticsearch7.org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.SearchHit;
|
||||
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.aggregations.Aggregations;
|
||||
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.graylog.shaded.elasticsearch7.org.elasticsearch.search.sort.SortOrder;
|
||||
import org.graylog.storage.elasticsearch7.views.ESGeneratedQueryContext;
|
||||
|
||||
@@ -52,10 +53,8 @@ public class ESEventList implements ESSearchTypeHandler<EventList> {
|
||||
public void doGenerateQueryPart(Query query, EventList eventList,
|
||||
ESGeneratedQueryContext queryContext) {
|
||||
final var searchSourceBuilder = queryContext.searchSourceBuilder(eventList);
|
||||
final var sortConfig = eventList.sort()
|
||||
.filter(sort -> EventList.KNOWN_ATTRIBUTES.contains(sort.field()))
|
||||
.orElse(EventList.DEFAULT_SORT);
|
||||
searchSourceBuilder.sort(sortConfig.field(), toSortOrder(sortConfig.direction()));
|
||||
final FieldSortBuilder sortConfig = sortConfig(eventList);
|
||||
searchSourceBuilder.sort(sortConfig);
|
||||
final var queryBuilder = searchSourceBuilder.query();
|
||||
if (!eventList.attributes().isEmpty() && queryBuilder instanceof BoolQueryBuilder boolQueryBuilder) {
|
||||
final var filterQueries = eventList.attributes().stream()
|
||||
@@ -80,6 +79,13 @@ public class ESEventList implements ESSearchTypeHandler<EventList> {
|
||||
};
|
||||
}
|
||||
|
||||
protected FieldSortBuilder sortConfig(EventList eventList) {
|
||||
final var sortConfig = eventList.sort()
|
||||
.filter(sort -> EventList.KNOWN_ATTRIBUTES.contains(sort.field()))
|
||||
.orElse(EventList.DEFAULT_SORT);
|
||||
return new FieldSortBuilder(sortConfig.field()).order(toSortOrder(sortConfig.direction()));
|
||||
}
|
||||
|
||||
protected List<Map<String, Object>> extractResult(SearchResponse result) {
|
||||
return StreamSupport.stream(result.getHits().spliterator(), false)
|
||||
.map(SearchHit::getSourceAsMap)
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.graylog.shaded.opensearch2.org.opensearch.index.query.BoolQueryBuilde
|
||||
import org.graylog.shaded.opensearch2.org.opensearch.index.query.QueryBuilders;
|
||||
import org.graylog.shaded.opensearch2.org.opensearch.search.SearchHit;
|
||||
import org.graylog.shaded.opensearch2.org.opensearch.search.aggregations.Aggregations;
|
||||
import org.graylog.shaded.opensearch2.org.opensearch.search.sort.FieldSortBuilder;
|
||||
import org.graylog.shaded.opensearch2.org.opensearch.search.sort.SortOrder;
|
||||
import org.graylog.storage.opensearch2.views.OSGeneratedQueryContext;
|
||||
|
||||
@@ -52,10 +53,8 @@ public class OSEventList implements EventListStrategy {
|
||||
public void doGenerateQueryPart(Query query, EventList eventList,
|
||||
OSGeneratedQueryContext queryContext) {
|
||||
final var searchSourceBuilder = queryContext.searchSourceBuilder(eventList);
|
||||
final var sortConfig = eventList.sort()
|
||||
.filter(sort -> EventList.KNOWN_ATTRIBUTES.contains(sort.field()))
|
||||
.orElse(EventList.DEFAULT_SORT);
|
||||
searchSourceBuilder.sort(sortConfig.field(), toSortOrder(sortConfig.direction()));
|
||||
final FieldSortBuilder sortConfig = sortConfig(eventList);
|
||||
searchSourceBuilder.sort(sortConfig);
|
||||
final var queryBuilder = searchSourceBuilder.query();
|
||||
if (!eventList.attributes().isEmpty() && queryBuilder instanceof BoolQueryBuilder boolQueryBuilder) {
|
||||
final var filterQueries = eventList.attributes().stream()
|
||||
@@ -80,6 +79,13 @@ public class OSEventList implements EventListStrategy {
|
||||
};
|
||||
}
|
||||
|
||||
protected FieldSortBuilder sortConfig(EventList eventList) {
|
||||
final var sortConfig = eventList.sort()
|
||||
.filter(sort -> EventList.KNOWN_ATTRIBUTES.contains(sort.field()))
|
||||
.orElse(EventList.DEFAULT_SORT);
|
||||
return new FieldSortBuilder(sortConfig.field()).order(toSortOrder(sortConfig.direction()));
|
||||
}
|
||||
|
||||
protected List<Map<String, Object>> extractResult(SearchResponse result) {
|
||||
return StreamSupport.stream(result.getHits().spliterator(), false)
|
||||
.map(SearchHit::getSourceAsMap)
|
||||
|
||||
Reference in New Issue
Block a user