Skip to content

Commit 1396f53

Browse files
authored
Add search extension plugins parameters to NativeQuery.
Original Pull Request #2307 Closes #2150
1 parent b4fe01d commit 1396f53

File tree

3 files changed

+38
-5
lines changed

3 files changed

+38
-5
lines changed

src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
2121
import co.elastic.clients.elasticsearch.core.search.FieldCollapse;
2222
import co.elastic.clients.elasticsearch.core.search.Suggester;
23+
import co.elastic.clients.json.JsonData;
2324

2425
import java.util.Collections;
2526
import java.util.LinkedHashMap;
@@ -49,6 +50,8 @@ public class NativeQuery extends BaseQuery {
4950
private List<ScriptedField> scriptedFields = Collections.emptyList();
5051
private List<SortOptions> sortOptions = Collections.emptyList();
5152

53+
private Map<String, JsonData> searchExtensions = Collections.emptyMap();
54+
5255
public NativeQuery(NativeQueryBuilder builder) {
5356
super(builder);
5457
this.query = builder.getQuery();
@@ -58,6 +61,7 @@ public NativeQuery(NativeQueryBuilder builder) {
5861
this.fieldCollapse = builder.getFieldCollapse();
5962
this.scriptedFields = builder.getScriptedFields();
6063
this.sortOptions = builder.getSortOptions();
64+
this.searchExtensions = builder.getSearchExtensions();
6165
}
6266

6367
public NativeQuery(@Nullable Query query) {
@@ -99,4 +103,8 @@ public List<ScriptedField> getScriptedFields() {
99103
public List<SortOptions> getSortOptions() {
100104
return sortOptions;
101105
}
106+
107+
public Map<String, JsonData> getSearchExtensions() {
108+
return searchExtensions;
109+
}
102110
}

src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
2121
import co.elastic.clients.elasticsearch.core.search.FieldCollapse;
2222
import co.elastic.clients.elasticsearch.core.search.Suggester;
23+
import co.elastic.clients.json.JsonData;
2324
import co.elastic.clients.util.ObjectBuilder;
2425

2526
import java.util.ArrayList;
2627
import java.util.Arrays;
27-
import java.util.Collections;
2828
import java.util.LinkedHashMap;
2929
import java.util.List;
3030
import java.util.Map;
@@ -49,9 +49,9 @@ public class NativeQueryBuilder extends BaseQueryBuilder<NativeQuery, NativeQuer
4949
@Nullable private FieldCollapse fieldCollapse;
5050
private final List<ScriptedField> scriptedFields = new ArrayList<>();
5151
private List<SortOptions> sortOptions = new ArrayList<>();
52+
private Map<String, JsonData> searchExtensions = new LinkedHashMap<>();
5253

53-
public NativeQueryBuilder() {
54-
}
54+
public NativeQueryBuilder() {}
5555

5656
@Nullable
5757
public Query getQuery() {
@@ -85,6 +85,10 @@ public List<SortOptions> getSortOptions() {
8585
return sortOptions;
8686
}
8787

88+
public Map<String, JsonData> getSearchExtensions() {
89+
return this.searchExtensions;
90+
}
91+
8892
public NativeQueryBuilder withQuery(Query query) {
8993

9094
Assert.notNull(query, "query must not be null");
@@ -167,6 +171,23 @@ public NativeQueryBuilder withSort(Function<SortOptions.Builder, ObjectBuilder<S
167171
return this;
168172
}
169173

174+
public NativeQueryBuilder withSearchExtension(String key, JsonData value) {
175+
176+
Assert.notNull(key, "key must not be null");
177+
Assert.notNull(value, "value must not be null");
178+
179+
searchExtensions.put(key, value);
180+
return this;
181+
}
182+
183+
public NativeQueryBuilder withSearchExtensions(Map<String, JsonData> searchExtensions) {
184+
185+
Assert.notNull(searchExtensions, "searchExtensions must not be null");
186+
187+
searchExtensions.putAll(searchExtensions);
188+
return this;
189+
}
190+
170191
public NativeQuery build() {
171192
return new NativeQuery(this);
172193
}

src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,7 +1398,9 @@ private void prepareNativeSearch(NativeQuery query, SearchRequest.Builder builde
13981398
builder.aggregations(query.getAggregations());
13991399
}
14001400

1401-
// todo #2150 searchExt, currently not supported by the new client
1401+
if (!isEmpty(query.getSearchExtensions())) {
1402+
builder.ext(query.getSearchExtensions());
1403+
}
14021404
}
14031405

14041406
@SuppressWarnings("DuplicatedCode")
@@ -1416,7 +1418,9 @@ private void prepareNativeSearch(NativeQuery query, MultisearchBody.Builder buil
14161418
builder.aggregations(query.getAggregations());
14171419
}
14181420

1419-
// todo #2150 searchExt, currently not supported by the new client
1421+
if (!isEmpty(query.getSearchExtensions())) {
1422+
builder.ext(query.getSearchExtensions());
1423+
}
14201424
}
14211425

14221426
@Nullable

0 commit comments

Comments
 (0)