9
9
package org .opensearch .client .opensearch ._types .query_dsl ;
10
10
11
11
import jakarta .json .stream .JsonGenerator ;
12
+ import java .util .Map ;
12
13
import java .util .function .Function ;
14
+ import javax .annotation .Nonnull ;
13
15
import javax .annotation .Nullable ;
16
+ import org .opensearch .client .json .JsonData ;
14
17
import org .opensearch .client .json .JsonpDeserializable ;
15
18
import org .opensearch .client .json .JsonpDeserializer ;
16
19
import org .opensearch .client .json .JsonpMapper ;
@@ -31,6 +34,10 @@ public class KnnQuery extends QueryBase implements QueryVariant {
31
34
private final Float maxDistance ;
32
35
@ Nullable
33
36
private final Query filter ;
37
+ @ Nonnull
38
+ private final Map <String , JsonData > methodParameters ;
39
+ @ Nullable
40
+ private final KnnQueryRescore rescore ;
34
41
35
42
private KnnQuery (Builder builder ) {
36
43
super (builder );
@@ -41,6 +48,8 @@ private KnnQuery(Builder builder) {
41
48
this .minScore = builder .minScore ;
42
49
this .maxDistance = builder .maxDistance ;
43
50
this .filter = builder .filter ;
51
+ this .methodParameters = ApiTypeHelper .unmodifiable (builder .methodParameters );
52
+ this .rescore = builder .rescore ;
44
53
}
45
54
46
55
public static KnnQuery of (Function <Builder , ObjectBuilder <KnnQuery >> fn ) {
@@ -108,6 +117,16 @@ public final Query filter() {
108
117
return this .filter ;
109
118
}
110
119
120
+ @ Nonnull
121
+ public final Map <String , JsonData > methodParameters () {
122
+ return this .methodParameters ;
123
+ }
124
+
125
+ @ Nullable
126
+ public final KnnQueryRescore rescore () {
127
+ return this .rescore ;
128
+ }
129
+
111
130
@ Override
112
131
protected void serializeInternal (JsonGenerator generator , JsonpMapper mapper ) {
113
132
generator .writeStartObject (this .field );
@@ -138,11 +157,30 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
138
157
this .filter .serialize (generator , mapper );
139
158
}
140
159
160
+ if (ApiTypeHelper .isDefined (this .methodParameters )) {
161
+ for (Map .Entry <String , JsonData > entry : this .methodParameters .entrySet ()) {
162
+ generator .writeKey (entry .getKey ());
163
+ entry .getValue ().serialize (generator , mapper );
164
+ }
165
+ }
166
+
167
+ if (this .rescore != null ) {
168
+ generator .writeKey ("rescore" );
169
+ this .rescore .serialize (generator , mapper );
170
+ }
171
+
141
172
generator .writeEnd ();
142
173
}
143
174
144
175
public Builder toBuilder () {
145
- return toBuilder (new Builder ()).field (field ).vector (vector ).k (k ).minScore (minScore ).maxDistance (maxDistance ).filter (filter );
176
+ return toBuilder (new Builder ()).field (field )
177
+ .vector (vector )
178
+ .k (k )
179
+ .minScore (minScore )
180
+ .maxDistance (maxDistance )
181
+ .filter (filter )
182
+ .methodParameters (methodParameters )
183
+ .rescore (rescore );
146
184
}
147
185
148
186
/**
@@ -161,6 +199,10 @@ public static class Builder extends QueryBase.AbstractBuilder<Builder> implement
161
199
private Float maxDistance ;
162
200
@ Nullable
163
201
private Query filter ;
202
+ @ Nullable
203
+ private Map <String , JsonData > methodParameters ;
204
+ @ Nullable
205
+ private KnnQueryRescore rescore ;
164
206
165
207
/**
166
208
* Required - The target field.
@@ -227,6 +269,25 @@ public Builder filter(@Nullable Query filter) {
227
269
return this ;
228
270
}
229
271
272
+ public Builder methodParameters (@ Nonnull Map <String , JsonData > value ) {
273
+ this .methodParameters = _mapPutAll (this .methodParameters , value );
274
+ return this ;
275
+ }
276
+
277
+ public Builder methodParameters (String key , JsonData value ) {
278
+ this .methodParameters = _mapPut (this .methodParameters , key , value );
279
+ return this ;
280
+ }
281
+
282
+ public Builder rescore (@ Nullable KnnQueryRescore value ) {
283
+ this .rescore = value ;
284
+ return this ;
285
+ }
286
+
287
+ public Builder rescore (Function <KnnQueryRescore .Builder , ObjectBuilder <KnnQueryRescore >> fn ) {
288
+ return this .rescore (fn .apply (new KnnQueryRescore .Builder ()).build ());
289
+ }
290
+
230
291
@ Override
231
292
protected Builder self () {
232
293
return this ;
@@ -264,6 +325,8 @@ protected static void setupKnnQueryDeserializer(ObjectDeserializer<Builder> op)
264
325
op .add (Builder ::minScore , JsonpDeserializer .floatDeserializer (), "min_score" );
265
326
op .add (Builder ::maxDistance , JsonpDeserializer .floatDeserializer (), "max_distance" );
266
327
op .add (Builder ::filter , Query ._DESERIALIZER , "filter" );
328
+ op .add (Builder ::methodParameters , JsonpDeserializer .stringMapDeserializer (JsonData ._DESERIALIZER ), "method_parameters" );
329
+ op .add (Builder ::rescore , KnnQueryRescore ._DESERIALIZER , "rescore" );
267
330
268
331
op .setKey (Builder ::field , JsonpDeserializer .stringDeserializer ());
269
332
}
0 commit comments