diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java index fb77f28fb..1fc9f5f72 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java @@ -20,6 +20,7 @@ import co.elastic.clients.elasticsearch._types.aggregations.Aggregation; import co.elastic.clients.elasticsearch._types.query_dsl.Query; import co.elastic.clients.elasticsearch.core.search.FieldCollapse; import co.elastic.clients.elasticsearch.core.search.Suggester; +import co.elastic.clients.json.JsonData; import java.util.Collections; import java.util.LinkedHashMap; @@ -49,6 +50,8 @@ public class NativeQuery extends BaseQuery { private List scriptedFields = Collections.emptyList(); private List sortOptions = Collections.emptyList(); + private Map searchExtensions = Collections.emptyMap(); + public NativeQuery(NativeQueryBuilder builder) { super(builder); this.query = builder.getQuery(); @@ -58,6 +61,7 @@ public class NativeQuery extends BaseQuery { this.fieldCollapse = builder.getFieldCollapse(); this.scriptedFields = builder.getScriptedFields(); this.sortOptions = builder.getSortOptions(); + this.searchExtensions = builder.getSearchExtensions(); } public NativeQuery(@Nullable Query query) { @@ -99,4 +103,8 @@ public class NativeQuery extends BaseQuery { public List getSortOptions() { return sortOptions; } + + public Map getSearchExtensions() { + return searchExtensions; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java index 0a046282d..1deafc0d0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java @@ -20,11 +20,11 @@ import co.elastic.clients.elasticsearch._types.aggregations.Aggregation; import co.elastic.clients.elasticsearch._types.query_dsl.Query; import co.elastic.clients.elasticsearch.core.search.FieldCollapse; import co.elastic.clients.elasticsearch.core.search.Suggester; +import co.elastic.clients.json.JsonData; import co.elastic.clients.util.ObjectBuilder; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -49,9 +49,9 @@ public class NativeQueryBuilder extends BaseQueryBuilder scriptedFields = new ArrayList<>(); private List sortOptions = new ArrayList<>(); + private Map searchExtensions = new LinkedHashMap<>(); - public NativeQueryBuilder() { - } + public NativeQueryBuilder() {} @Nullable public Query getQuery() { @@ -85,6 +85,10 @@ public class NativeQueryBuilder extends BaseQueryBuilder getSearchExtensions() { + return this.searchExtensions; + } + public NativeQueryBuilder withQuery(Query query) { Assert.notNull(query, "query must not be null"); @@ -167,6 +171,23 @@ public class NativeQueryBuilder extends BaseQueryBuilder searchExtensions) { + + Assert.notNull(searchExtensions, "searchExtensions must not be null"); + + searchExtensions.putAll(searchExtensions); + return this; + } + public NativeQuery build() { return new NativeQuery(this); } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index 6f7258834..7d96d3b05 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -1398,7 +1398,9 @@ class RequestConverter { builder.aggregations(query.getAggregations()); } - // todo #2150 searchExt, currently not supported by the new client + if (!isEmpty(query.getSearchExtensions())) { + builder.ext(query.getSearchExtensions()); + } } @SuppressWarnings("DuplicatedCode") @@ -1416,7 +1418,9 @@ class RequestConverter { builder.aggregations(query.getAggregations()); } - // todo #2150 searchExt, currently not supported by the new client + if (!isEmpty(query.getSearchExtensions())) { + builder.ext(query.getSearchExtensions()); + } } @Nullable