Skip to content

Commit dde5f28

Browse files
committed
Add missed fields to MultisearchBody: ext, rescore and to SearchRequest: ext
Signed-off-by: Andriy Redko <[email protected]>
1 parent 0bf1810 commit dde5f28

File tree

5 files changed

+180
-1
lines changed

5 files changed

+180
-1
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ This section is for maintaining a changelog for all breaking changes for the cli
3636
### Added
3737
- Add missed fields to MultisearchBody: seqNoPrimaryTerm, storedFields, explain, fields, indicesBoost ([#914](https://github.com/opensearch-project/opensearch-java/pull/914))
3838
- Add missed fields to MultisearchBody: collapse, version, timeout ([#916](https://github.com/opensearch-project/opensearch-java/pull/916)
39+
- Add missed fields to MultisearchBody: ext, rescore and to SearchRequest: ext ([#918](https://github.com/opensearch-project/opensearch-java/pull/918)
3940

4041
### Dependencies
4142
- Bumps `io.github.classgraph:classgraph` from 4.8.161 to 4.8.165

java-client/src/main/java/org/opensearch/client/opensearch/core/SearchRequest.java

+49-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.util.function.Function;
4040
import java.util.stream.Collectors;
4141
import javax.annotation.Nullable;
42+
import org.opensearch.client.json.JsonData;
4243
import org.opensearch.client.json.JsonpDeserializable;
4344
import org.opensearch.client.json.JsonpDeserializer;
4445
import org.opensearch.client.json.JsonpMapper;
@@ -59,6 +60,7 @@
5960
import org.opensearch.client.opensearch._types.query_dsl.FieldAndFormat;
6061
import org.opensearch.client.opensearch._types.query_dsl.Operator;
6162
import org.opensearch.client.opensearch._types.query_dsl.Query;
63+
import org.opensearch.client.opensearch.core.SearchTemplateRequest.Builder;
6264
import org.opensearch.client.opensearch.core.search.FieldCollapse;
6365
import org.opensearch.client.opensearch.core.search.Highlight;
6466
import org.opensearch.client.opensearch.core.search.Pit;
@@ -223,6 +225,8 @@ public class SearchRequest extends RequestBase implements JsonpSerializable {
223225
@Nullable
224226
private final Boolean version;
225227

228+
private final Map<String, JsonData> ext;
229+
226230
// ---------------------------------------------------------------------------------------------
227231

228232
private SearchRequest(Builder builder) {
@@ -279,6 +283,7 @@ private SearchRequest(Builder builder) {
279283
this.trackScores = builder.trackScores;
280284
this.trackTotalHits = builder.trackTotalHits;
281285
this.version = builder.version;
286+
this.ext = ApiTypeHelper.unmodifiable(builder.ext);
282287

283288
}
284289

@@ -821,6 +826,13 @@ public final Boolean version() {
821826
return this.version;
822827
}
823828

829+
/**
830+
* API name: {@code ext}
831+
*/
832+
public final Map<String, JsonData> ext() {
833+
return this.ext;
834+
}
835+
824836
/**
825837
* Serialize this object to JSON.
826838
*/
@@ -1050,6 +1062,17 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
10501062

10511063
}
10521064

1065+
if (ApiTypeHelper.isDefined(this.ext)) {
1066+
generator.writeKey("ext");
1067+
generator.writeStartObject();
1068+
for (Map.Entry<String, JsonData> item0 : this.ext.entrySet()) {
1069+
generator.writeKey(item0.getKey());
1070+
item0.getValue().serialize(generator, mapper);
1071+
1072+
}
1073+
generator.writeEnd();
1074+
}
1075+
10531076
}
10541077

10551078
public Builder toBuilder() {
@@ -1104,7 +1127,8 @@ public Builder toBuilder() {
11041127
.timeout(timeout)
11051128
.trackScores(trackScores)
11061129
.trackTotalHits(trackTotalHits)
1107-
.version(version);
1130+
.version(version)
1131+
.ext(ext);
11081132
}
11091133

11101134
// ---------------------------------------------------------------------------------------------
@@ -1270,6 +1294,9 @@ public static class Builder extends ObjectBuilderBase implements ObjectBuilder<S
12701294
@Nullable
12711295
private Boolean version;
12721296

1297+
@Nullable
1298+
private Map<String, JsonData> ext;
1299+
12731300
/**
12741301
* Indicates which source fields are returned for matching documents. These
12751302
* fields are returned in the hits._source property of the search response.
@@ -2152,6 +2179,26 @@ public final Builder version(@Nullable Boolean value) {
21522179
return this;
21532180
}
21542181

2182+
/**
2183+
* API name: {@code ext}
2184+
* <p>
2185+
* Adds all entries of <code>map</code> to <code>ext</code>.
2186+
*/
2187+
public final Builder ext(Map<String, JsonData> map) {
2188+
this.ext = _mapPutAll(this.ext, map);
2189+
return this;
2190+
}
2191+
2192+
/**
2193+
* API name: {@code ext}
2194+
* <p>
2195+
* Adds an entry to <code>ext</code>.
2196+
*/
2197+
public final Builder ext(String key, JsonData value) {
2198+
this.ext = _mapPut(this.ext, key, value);
2199+
return this;
2200+
}
2201+
21552202
/**
21562203
* Builds a {@link SearchRequest}.
21572204
*
@@ -2211,6 +2258,7 @@ protected static void setupSearchRequestDeserializer(ObjectDeserializer<SearchRe
22112258
op.add(Builder::trackScores, JsonpDeserializer.booleanDeserializer(), "track_scores");
22122259
op.add(Builder::trackTotalHits, TrackHits._DESERIALIZER, "track_total_hits");
22132260
op.add(Builder::version, JsonpDeserializer.booleanDeserializer(), "version");
2261+
op.add(Builder::ext, JsonpDeserializer.stringMapDeserializer(JsonData._DESERIALIZER), "ext");
22142262

22152263
}
22162264

java-client/src/main/java/org/opensearch/client/opensearch/core/msearch/MultisearchBody.java

+100
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Map;
3838
import java.util.function.Function;
3939
import javax.annotation.Nullable;
40+
import org.opensearch.client.json.JsonData;
4041
import org.opensearch.client.json.JsonpDeserializable;
4142
import org.opensearch.client.json.JsonpDeserializer;
4243
import org.opensearch.client.json.JsonpMapper;
@@ -51,6 +52,7 @@
5152
import org.opensearch.client.opensearch.core.SearchRequest.Builder;
5253
import org.opensearch.client.opensearch.core.search.FieldCollapse;
5354
import org.opensearch.client.opensearch.core.search.Highlight;
55+
import org.opensearch.client.opensearch.core.search.Rescore;
5456
import org.opensearch.client.opensearch.core.search.SourceConfig;
5557
import org.opensearch.client.opensearch.core.search.Suggester;
5658
import org.opensearch.client.opensearch.core.search.TrackHits;
@@ -121,6 +123,10 @@ public class MultisearchBody implements JsonpSerializable {
121123
@Nullable
122124
private final String timeout;
123125

126+
private final List<Rescore> rescore;
127+
128+
private final Map<String, JsonData> ext;
129+
124130
// ---------------------------------------------------------------------------------------------
125131

126132
private MultisearchBody(Builder builder) {
@@ -147,6 +153,8 @@ private MultisearchBody(Builder builder) {
147153
this.collapse = builder.collapse;
148154
this.version = builder.version;
149155
this.timeout = builder.timeout;
156+
this.rescore = ApiTypeHelper.unmodifiable(builder.rescore);
157+
this.ext = ApiTypeHelper.unmodifiable(builder.ext);
150158
}
151159

152160
public static MultisearchBody of(Function<Builder, ObjectBuilder<MultisearchBody>> fn) {
@@ -341,6 +349,20 @@ public final String timeout() {
341349
return this.timeout;
342350
}
343351

352+
/**
353+
* API name: {@code rescore}
354+
*/
355+
public final List<Rescore> rescore() {
356+
return this.rescore;
357+
}
358+
359+
/**
360+
* API name: {@code ext}
361+
*/
362+
public final Map<String, JsonData> ext() {
363+
return this.ext;
364+
}
365+
344366
/**
345367
* Serialize this object to JSON.
346368
*/
@@ -511,6 +533,27 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
511533
generator.writeKey("timeout");
512534
generator.write(this.timeout);
513535
}
536+
537+
if (ApiTypeHelper.isDefined(this.rescore)) {
538+
generator.writeKey("rescore");
539+
generator.writeStartArray();
540+
for (Rescore item0 : this.rescore) {
541+
item0.serialize(generator, mapper);
542+
543+
}
544+
generator.writeEnd();
545+
}
546+
547+
if (ApiTypeHelper.isDefined(this.ext)) {
548+
generator.writeKey("ext");
549+
generator.writeStartObject();
550+
for (Map.Entry<String, JsonData> item0 : this.ext.entrySet()) {
551+
generator.writeKey(item0.getKey());
552+
item0.getValue().serialize(generator, mapper);
553+
554+
}
555+
generator.writeEnd();
556+
}
514557
}
515558

516559
// ---------------------------------------------------------------------------------------------
@@ -585,6 +628,12 @@ public static class Builder extends ObjectBuilderBase implements ObjectBuilder<M
585628
@Nullable
586629
private String timeout;
587630

631+
@Nullable
632+
private List<Rescore> rescore;
633+
634+
@Nullable
635+
private Map<String, JsonData> ext;
636+
588637
/**
589638
* API name: {@code aggregations}
590639
* <p>
@@ -965,6 +1014,55 @@ public final Builder timeout(@Nullable String value) {
9651014
return this;
9661015
}
9671016

1017+
/**
1018+
* API name: {@code rescore}
1019+
* <p>
1020+
* Adds all elements of <code>list</code> to <code>rescore</code>.
1021+
*/
1022+
public final Builder rescore(List<Rescore> list) {
1023+
this.rescore = _listAddAll(this.rescore, list);
1024+
return this;
1025+
}
1026+
1027+
/**
1028+
* API name: {@code rescore}
1029+
* <p>
1030+
* Adds one or more values to <code>rescore</code>.
1031+
*/
1032+
public final Builder rescore(Rescore value, Rescore... values) {
1033+
this.rescore = _listAdd(this.rescore, value, values);
1034+
return this;
1035+
}
1036+
1037+
/**
1038+
* API name: {@code rescore}
1039+
* <p>
1040+
* Adds a value to <code>rescore</code> using a builder lambda.
1041+
*/
1042+
public final Builder rescore(Function<Rescore.Builder, ObjectBuilder<Rescore>> fn) {
1043+
return rescore(fn.apply(new Rescore.Builder()).build());
1044+
}
1045+
1046+
/**
1047+
* API name: {@code ext}
1048+
* <p>
1049+
* Adds all entries of <code>map</code> to <code>ext</code>.
1050+
*/
1051+
public final Builder ext(Map<String, JsonData> map) {
1052+
this.ext = _mapPutAll(this.ext, map);
1053+
return this;
1054+
}
1055+
1056+
/**
1057+
* API name: {@code ext}
1058+
* <p>
1059+
* Adds an entry to <code>ext</code>.
1060+
*/
1061+
public final Builder ext(String key, JsonData value) {
1062+
this.ext = _mapPut(this.ext, key, value);
1063+
return this;
1064+
}
1065+
9681066
/**
9691067
* Builds a {@link MultisearchBody}.
9701068
*
@@ -1016,6 +1114,8 @@ protected static void setupMultisearchBodyDeserializer(ObjectDeserializer<Multis
10161114
op.add(Builder::collapse, FieldCollapse._DESERIALIZER, "collapse");
10171115
op.add(Builder::version, JsonpDeserializer.booleanDeserializer(), "version");
10181116
op.add(Builder::timeout, JsonpDeserializer.stringDeserializer(), "timeout");
1117+
op.add(Builder::rescore, JsonpDeserializer.arrayDeserializer(Rescore._DESERIALIZER), "rescore");
1118+
op.add(Builder::ext, JsonpDeserializer.stringMapDeserializer(JsonData._DESERIALIZER), "ext");
10191119
}
10201120

10211121
}

java-client/src/test/java/org/opensearch/client/opensearch/core/SearchRequestTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.opensearch.client.opensearch.core;
22

3+
import java.util.Collections;
34
import org.junit.Test;
5+
import org.opensearch.client.json.JsonData;
46
import org.opensearch.client.opensearch._types.FieldValue;
57
import org.opensearch.client.opensearch.model.ModelTestCase;
68

@@ -12,6 +14,16 @@ public void afterSearch() {
1214
assertEquals("{\"search_after\":[1,\"string\"]}", toJson(request));
1315
}
1416

17+
@Test
18+
public void ext() {
19+
SearchRequest request = new SearchRequest.Builder().ext(
20+
"similarity",
21+
JsonData.of(Collections.singletonMap("fields", Collections.singletonList("name")))
22+
).build();
23+
24+
assertEquals("{\"ext\":{\"similarity\":{\"fields\":[\"name\"]}}}", toJson(request));
25+
}
26+
1527
@Test
1628
public void toBuilder() {
1729
SearchRequest origin = new SearchRequest.Builder().index("index").build();

java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchRequestIT.java

+18
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.io.IOException;
1212
import java.util.Arrays;
13+
import java.util.Map;
1314
import java.util.stream.Collectors;
1415
import org.junit.Test;
1516
import org.opensearch.Version;
@@ -18,6 +19,7 @@
1819
import org.opensearch.client.opensearch._types.mapping.Property;
1920
import org.opensearch.client.opensearch._types.query_dsl.MatchQuery;
2021
import org.opensearch.client.opensearch._types.query_dsl.Query;
22+
import org.opensearch.client.opensearch._types.query_dsl.QueryBuilders;
2123
import org.opensearch.client.opensearch._types.query_dsl.TermQuery;
2224
import org.opensearch.client.opensearch.core.SearchRequest;
2325
import org.opensearch.client.opensearch.core.SearchResponse;
@@ -120,6 +122,22 @@ public void shouldReturnSearchResultsWithoutStoredFields() throws Exception {
120122
assertNull(response.hits().hits().get(1).id());
121123
}
122124

125+
@Test
126+
public void shouldReturnSearchResultsWithExt() throws Exception {
127+
final String index = "search_request";
128+
createIndex(index);
129+
130+
final SearchRequest request = SearchRequest.of(
131+
r -> r.index(index)
132+
.sort(s -> s.field(f -> f.field("name").order(SortOrder.Asc)))
133+
.query(b -> b.matchAll(QueryBuilders.matchAll().build()))
134+
.ext(Map.of())
135+
);
136+
137+
final SearchResponse<ShopItem> response = javaClient().search(request, ShopItem.class);
138+
assertEquals(response.hits().hits().size(), 8);
139+
}
140+
123141
private void createTestDocuments(String index) throws IOException {
124142
javaClient().create(_1 -> _1.index(index).id("1").document(createItem("hummer", "huge", "yes", 2)));
125143
javaClient().create(_1 -> _1.index(index).id("2").document(createItem("jammer", "huge", "yes", 1)));

0 commit comments

Comments
 (0)