20
20
package co .elastic .clients .elasticsearch ._types ;
21
21
22
22
import co .elastic .clients .elasticsearch ._types .query_dsl .Query ;
23
+ import co .elastic .clients .elasticsearch ._types .query_dsl .QueryBase ;
23
24
import co .elastic .clients .elasticsearch ._types .query_dsl .QueryVariant ;
24
- import co .elastic .clients .elasticsearch .core .search .InnerHits ;
25
25
import co .elastic .clients .json .JsonpDeserializable ;
26
26
import co .elastic .clients .json .JsonpDeserializer ;
27
27
import co .elastic .clients .json .JsonpMapper ;
28
- import co .elastic .clients .json .JsonpSerializable ;
29
- import co .elastic .clients .json .JsonpUtils ;
30
28
import co .elastic .clients .json .ObjectBuilderDeserializer ;
31
29
import co .elastic .clients .json .ObjectDeserializer ;
32
30
import co .elastic .clients .util .ApiTypeHelper ;
33
31
import co .elastic .clients .util .ObjectBuilder ;
34
- import co .elastic .clients .util .WithJsonObjectBuilderBase ;
35
32
import jakarta .json .stream .JsonGenerator ;
36
33
import java .lang .Float ;
37
34
import java .lang .Long ;
64
61
* specification</a>
65
62
*/
66
63
@ JsonpDeserializable
67
- public class KnnQuery implements QueryVariant , JsonpSerializable {
64
+ public class KnnQuery extends QueryBase implements QueryVariant {
68
65
private final String field ;
69
66
70
67
private final List <Float > queryVector ;
71
68
72
69
@ Nullable
73
70
private final QueryVectorBuilder queryVectorBuilder ;
74
71
75
- private final long k ;
76
-
77
- private final long numCandidates ;
78
-
79
72
@ Nullable
80
- private final Float boost ;
73
+ private final Long numCandidates ;
81
74
82
75
private final List <Query > filter ;
83
76
84
77
@ Nullable
85
78
private final Float similarity ;
86
79
87
- @ Nullable
88
- private final InnerHits innerHits ;
89
-
90
80
// ---------------------------------------------------------------------------------------------
91
81
92
82
private KnnQuery (Builder builder ) {
83
+ super (builder );
93
84
94
85
this .field = ApiTypeHelper .requireNonNull (builder .field , this , "field" );
95
86
this .queryVector = ApiTypeHelper .unmodifiable (builder .queryVector );
96
87
this .queryVectorBuilder = builder .queryVectorBuilder ;
97
- this .k = ApiTypeHelper .requireNonNull (builder .k , this , "k" );
98
- this .numCandidates = ApiTypeHelper .requireNonNull (builder .numCandidates , this , "numCandidates" );
99
- this .boost = builder .boost ;
88
+ this .numCandidates = builder .numCandidates ;
100
89
this .filter = ApiTypeHelper .unmodifiable (builder .filter );
101
90
this .similarity = builder .similarity ;
102
- this .innerHits = builder .innerHits ;
103
91
104
92
}
105
93
@@ -145,31 +133,13 @@ public final QueryVectorBuilder queryVectorBuilder() {
145
133
}
146
134
147
135
/**
148
- * Required - The final number of nearest neighbors to return as top hits
149
- * <p>
150
- * API name: {@code k}
151
- */
152
- public final long k () {
153
- return this .k ;
154
- }
155
-
156
- /**
157
- * Required - The number of nearest neighbor candidates to consider per shard
136
+ * The number of nearest neighbor candidates to consider per shard
158
137
* <p>
159
138
* API name: {@code num_candidates}
160
139
*/
161
- public final long numCandidates () {
162
- return this .numCandidates ;
163
- }
164
-
165
- /**
166
- * Boost value to apply to kNN scores
167
- * <p>
168
- * API name: {@code boost}
169
- */
170
140
@ Nullable
171
- public final Float boost () {
172
- return this .boost ;
141
+ public final Long numCandidates () {
142
+ return this .numCandidates ;
173
143
}
174
144
175
145
/**
@@ -191,27 +161,9 @@ public final Float similarity() {
191
161
return this .similarity ;
192
162
}
193
163
194
- /**
195
- * If defined, each search hit will contain inner hits.
196
- * <p>
197
- * API name: {@code inner_hits}
198
- */
199
- @ Nullable
200
- public final InnerHits innerHits () {
201
- return this .innerHits ;
202
- }
203
-
204
- /**
205
- * Serialize this object to JSON.
206
- */
207
- public void serialize (JsonGenerator generator , JsonpMapper mapper ) {
208
- generator .writeStartObject ();
209
- serializeInternal (generator , mapper );
210
- generator .writeEnd ();
211
- }
212
-
213
164
protected void serializeInternal (JsonGenerator generator , JsonpMapper mapper ) {
214
165
166
+ super .serializeInternal (generator , mapper );
215
167
generator .writeKey ("field" );
216
168
generator .write (this .field );
217
169
@@ -230,15 +182,9 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
230
182
this .queryVectorBuilder .serialize (generator , mapper );
231
183
232
184
}
233
- generator .writeKey ("k" );
234
- generator .write (this .k );
235
-
236
- generator .writeKey ("num_candidates" );
237
- generator .write (this .numCandidates );
238
-
239
- if (this .boost != null ) {
240
- generator .writeKey ("boost" );
241
- generator .write (this .boost );
185
+ if (this .numCandidates != null ) {
186
+ generator .writeKey ("num_candidates" );
187
+ generator .write (this .numCandidates );
242
188
243
189
}
244
190
if (ApiTypeHelper .isDefined (this .filter )) {
@@ -256,26 +202,16 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
256
202
generator .write (this .similarity );
257
203
258
204
}
259
- if (this .innerHits != null ) {
260
- generator .writeKey ("inner_hits" );
261
- this .innerHits .serialize (generator , mapper );
262
-
263
- }
264
205
265
206
}
266
207
267
- @ Override
268
- public String toString () {
269
- return JsonpUtils .toString (this );
270
- }
271
-
272
208
// ---------------------------------------------------------------------------------------------
273
209
274
210
/**
275
211
* Builder for {@link KnnQuery}.
276
212
*/
277
213
278
- public static class Builder extends WithJsonObjectBuilderBase <Builder > implements ObjectBuilder <KnnQuery > {
214
+ public static class Builder extends QueryBase . AbstractBuilder <Builder > implements ObjectBuilder <KnnQuery > {
279
215
private String field ;
280
216
281
217
@ Nullable
@@ -284,22 +220,15 @@ public static class Builder extends WithJsonObjectBuilderBase<Builder> implement
284
220
@ Nullable
285
221
private QueryVectorBuilder queryVectorBuilder ;
286
222
287
- private Long k ;
288
-
289
- private Long numCandidates ;
290
-
291
223
@ Nullable
292
- private Float boost ;
224
+ private Long numCandidates ;
293
225
294
226
@ Nullable
295
227
private List <Query > filter ;
296
228
297
229
@ Nullable
298
230
private Float similarity ;
299
231
300
- @ Nullable
301
- private InnerHits innerHits ;
302
-
303
232
/**
304
233
* Required - The name of the vector field to search against
305
234
* <p>
@@ -357,35 +286,15 @@ public final Builder queryVectorBuilder(
357
286
}
358
287
359
288
/**
360
- * Required - The final number of nearest neighbors to return as top hits
361
- * <p>
362
- * API name: {@code k}
363
- */
364
- public final Builder k (long value ) {
365
- this .k = value ;
366
- return this ;
367
- }
368
-
369
- /**
370
- * Required - The number of nearest neighbor candidates to consider per shard
289
+ * The number of nearest neighbor candidates to consider per shard
371
290
* <p>
372
291
* API name: {@code num_candidates}
373
292
*/
374
- public final Builder numCandidates (long value ) {
293
+ public final Builder numCandidates (@ Nullable Long value ) {
375
294
this .numCandidates = value ;
376
295
return this ;
377
296
}
378
297
379
- /**
380
- * Boost value to apply to kNN scores
381
- * <p>
382
- * API name: {@code boost}
383
- */
384
- public final Builder boost (@ Nullable Float value ) {
385
- this .boost = value ;
386
- return this ;
387
- }
388
-
389
298
/**
390
299
* Filters for the kNN search query
391
300
* <p>
@@ -431,25 +340,6 @@ public final Builder similarity(@Nullable Float value) {
431
340
return this ;
432
341
}
433
342
434
- /**
435
- * If defined, each search hit will contain inner hits.
436
- * <p>
437
- * API name: {@code inner_hits}
438
- */
439
- public final Builder innerHits (@ Nullable InnerHits value ) {
440
- this .innerHits = value ;
441
- return this ;
442
- }
443
-
444
- /**
445
- * If defined, each search hit will contain inner hits.
446
- * <p>
447
- * API name: {@code inner_hits}
448
- */
449
- public final Builder innerHits (Function <InnerHits .Builder , ObjectBuilder <InnerHits >> fn ) {
450
- return this .innerHits (fn .apply (new InnerHits .Builder ()).build ());
451
- }
452
-
453
343
@ Override
454
344
protected Builder self () {
455
345
return this ;
@@ -477,17 +367,14 @@ public KnnQuery build() {
477
367
KnnQuery ::setupKnnQueryDeserializer );
478
368
479
369
protected static void setupKnnQueryDeserializer (ObjectDeserializer <KnnQuery .Builder > op ) {
480
-
370
+ QueryBase . setupQueryBaseDeserializer ( op );
481
371
op .add (Builder ::field , JsonpDeserializer .stringDeserializer (), "field" );
482
372
op .add (Builder ::queryVector , JsonpDeserializer .arrayDeserializer (JsonpDeserializer .floatDeserializer ()),
483
373
"query_vector" );
484
374
op .add (Builder ::queryVectorBuilder , QueryVectorBuilder ._DESERIALIZER , "query_vector_builder" );
485
- op .add (Builder ::k , JsonpDeserializer .longDeserializer (), "k" );
486
375
op .add (Builder ::numCandidates , JsonpDeserializer .longDeserializer (), "num_candidates" );
487
- op .add (Builder ::boost , JsonpDeserializer .floatDeserializer (), "boost" );
488
376
op .add (Builder ::filter , JsonpDeserializer .arrayDeserializer (Query ._DESERIALIZER ), "filter" );
489
377
op .add (Builder ::similarity , JsonpDeserializer .floatDeserializer (), "similarity" );
490
- op .add (Builder ::innerHits , InnerHits ._DESERIALIZER , "inner_hits" );
491
378
492
379
}
493
380
0 commit comments