21
21
// THIS CODE IS GENERATED. MANUAL EDITS WILL BE LOST.
22
22
//----------------------------------------------------
23
23
24
- package co .elastic .clients .elasticsearch ._types . query_dsl ;
24
+ package co .elastic .clients .elasticsearch ._types ;
25
25
26
+ import co .elastic .clients .elasticsearch ._types .query_dsl .Query ;
26
27
import co .elastic .clients .json .JsonpDeserializable ;
27
28
import co .elastic .clients .json .JsonpDeserializer ;
28
29
import co .elastic .clients .json .JsonpMapper ;
30
+ import co .elastic .clients .json .JsonpSerializable ;
31
+ import co .elastic .clients .json .JsonpUtils ;
29
32
import co .elastic .clients .json .ObjectBuilderDeserializer ;
30
33
import co .elastic .clients .json .ObjectDeserializer ;
31
34
import co .elastic .clients .util .ApiTypeHelper ;
32
35
import co .elastic .clients .util .ObjectBuilder ;
36
+ import co .elastic .clients .util .WithJsonObjectBuilderBase ;
33
37
import jakarta .json .stream .JsonGenerator ;
34
38
import java .lang .Double ;
35
- import java .lang .Integer ;
39
+ import java .lang .Float ;
40
+ import java .lang .Long ;
36
41
import java .lang .String ;
37
42
import java .util .List ;
38
43
import java .util .Objects ;
39
44
import java .util .function .Function ;
40
45
import javax .annotation .Nullable ;
41
46
42
- // typedef: _types.query_dsl. KnnQuery
47
+ // typedef: _types.KnnQuery
43
48
44
49
/**
45
- * A k-nearest neighbor (kNN) search finds the k nearest vectors to a query
46
- * vector, as measured by a similarity metric.
47
- *
48
- * @see <a href="../../doc-files/api-spec.html#_types.query_dsl.KnnQuery">API
50
+ *
51
+ * @see <a href="../doc-files/api-spec.html#_types.KnnQuery">API
49
52
* specification</a>
50
53
*/
51
54
@ JsonpDeserializable
52
- public class KnnQuery extends QueryBase implements QueryVariant {
55
+ public class KnnQuery implements JsonpSerializable {
53
56
private final String field ;
54
57
55
- private final int numCandidates ;
56
-
57
58
private final List <Double > queryVector ;
58
59
60
+ private final long k ;
61
+
62
+ private final long numCandidates ;
63
+
64
+ @ Nullable
65
+ private final Float boost ;
66
+
67
+ private final List <Query > filter ;
68
+
59
69
// ---------------------------------------------------------------------------------------------
60
70
61
71
private KnnQuery (Builder builder ) {
62
- super (builder );
63
72
64
73
this .field = ApiTypeHelper .requireNonNull (builder .field , this , "field" );
65
- this .numCandidates = ApiTypeHelper .requireNonNull (builder .numCandidates , this , "numCandidates" );
66
74
this .queryVector = ApiTypeHelper .unmodifiableRequired (builder .queryVector , this , "queryVector" );
75
+ this .k = ApiTypeHelper .requireNonNull (builder .k , this , "k" );
76
+ this .numCandidates = ApiTypeHelper .requireNonNull (builder .numCandidates , this , "numCandidates" );
77
+ this .boost = builder .boost ;
78
+ this .filter = ApiTypeHelper .unmodifiable (builder .filter );
67
79
68
80
}
69
81
@@ -72,43 +84,74 @@ public static KnnQuery of(Function<Builder, ObjectBuilder<KnnQuery>> fn) {
72
84
}
73
85
74
86
/**
75
- * Query variant kind.
87
+ * Required - The name of the vector field to search against
88
+ * <p>
89
+ * API name: {@code field}
76
90
*/
77
- @ Override
78
- public Query .Kind _queryKind () {
79
- return Query .Kind .Knn ;
91
+ public final String field () {
92
+ return this .field ;
80
93
}
81
94
82
95
/**
83
- * Required - API name: {@code field}
96
+ * Required - The query vector
97
+ * <p>
98
+ * API name: {@code query_vector}
84
99
*/
85
- public final String field () {
86
- return this .field ;
100
+ public final List < Double > queryVector () {
101
+ return this .queryVector ;
87
102
}
88
103
89
104
/**
90
- * Required - API name: {@code num_candidates}
105
+ * Required - The final number of nearest neighbors to return as top hits
106
+ * <p>
107
+ * API name: {@code k}
91
108
*/
92
- public final int numCandidates () {
109
+ public final long k () {
110
+ return this .k ;
111
+ }
112
+
113
+ /**
114
+ * Required - The number of nearest neighbor candidates to consider per shard
115
+ * <p>
116
+ * API name: {@code num_candidates}
117
+ */
118
+ public final long numCandidates () {
93
119
return this .numCandidates ;
94
120
}
95
121
96
122
/**
97
- * Required - API name: {@code query_vector}
123
+ * Boost value to apply to kNN scores
124
+ * <p>
125
+ * API name: {@code boost}
98
126
*/
99
- public final List <Double > queryVector () {
100
- return this .queryVector ;
127
+ @ Nullable
128
+ public final Float boost () {
129
+ return this .boost ;
130
+ }
131
+
132
+ /**
133
+ * Filters for the kNN search query
134
+ * <p>
135
+ * API name: {@code filter}
136
+ */
137
+ public final List <Query > filter () {
138
+ return this .filter ;
139
+ }
140
+
141
+ /**
142
+ * Serialize this object to JSON.
143
+ */
144
+ public void serialize (JsonGenerator generator , JsonpMapper mapper ) {
145
+ generator .writeStartObject ();
146
+ serializeInternal (generator , mapper );
147
+ generator .writeEnd ();
101
148
}
102
149
103
150
protected void serializeInternal (JsonGenerator generator , JsonpMapper mapper ) {
104
151
105
- super .serializeInternal (generator , mapper );
106
152
generator .writeKey ("field" );
107
153
generator .write (this .field );
108
154
109
- generator .writeKey ("num_candidates" );
110
- generator .write (this .numCandidates );
111
-
112
155
if (ApiTypeHelper .isDefined (this .queryVector )) {
113
156
generator .writeKey ("query_vector" );
114
157
generator .writeStartArray ();
@@ -119,7 +162,33 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
119
162
generator .writeEnd ();
120
163
121
164
}
165
+ generator .writeKey ("k" );
166
+ generator .write (this .k );
167
+
168
+ generator .writeKey ("num_candidates" );
169
+ generator .write (this .numCandidates );
170
+
171
+ if (this .boost != null ) {
172
+ generator .writeKey ("boost" );
173
+ generator .write (this .boost );
174
+
175
+ }
176
+ if (ApiTypeHelper .isDefined (this .filter )) {
177
+ generator .writeKey ("filter" );
178
+ generator .writeStartArray ();
179
+ for (Query item0 : this .filter ) {
180
+ item0 .serialize (generator , mapper );
122
181
182
+ }
183
+ generator .writeEnd ();
184
+
185
+ }
186
+
187
+ }
188
+
189
+ @ Override
190
+ public String toString () {
191
+ return JsonpUtils .toString (this );
123
192
}
124
193
125
194
// ---------------------------------------------------------------------------------------------
@@ -128,31 +197,35 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
128
197
* Builder for {@link KnnQuery}.
129
198
*/
130
199
131
- public static class Builder extends QueryBase . AbstractBuilder <Builder > implements ObjectBuilder <KnnQuery > {
200
+ public static class Builder extends WithJsonObjectBuilderBase <Builder > implements ObjectBuilder <KnnQuery > {
132
201
private String field ;
133
202
134
- private Integer numCandidates ;
135
-
136
203
private List <Double > queryVector ;
137
204
205
+ private Long k ;
206
+
207
+ private Long numCandidates ;
208
+
209
+ @ Nullable
210
+ private Float boost ;
211
+
212
+ @ Nullable
213
+ private List <Query > filter ;
214
+
138
215
/**
139
- * Required - API name: {@code field}
216
+ * Required - The name of the vector field to search against
217
+ * <p>
218
+ * API name: {@code field}
140
219
*/
141
220
public final Builder field (String value ) {
142
221
this .field = value ;
143
222
return this ;
144
223
}
145
224
146
225
/**
147
- * Required - API name: {@code num_candidates}
148
- */
149
- public final Builder numCandidates (int value ) {
150
- this .numCandidates = value ;
151
- return this ;
152
- }
153
-
154
- /**
155
- * Required - API name: {@code query_vector}
226
+ * Required - The query vector
227
+ * <p>
228
+ * API name: {@code query_vector}
156
229
* <p>
157
230
* Adds all elements of <code>list</code> to <code>queryVector</code>.
158
231
*/
@@ -162,7 +235,9 @@ public final Builder queryVector(List<Double> list) {
162
235
}
163
236
164
237
/**
165
- * Required - API name: {@code query_vector}
238
+ * Required - The query vector
239
+ * <p>
240
+ * API name: {@code query_vector}
166
241
* <p>
167
242
* Adds one or more values to <code>queryVector</code>.
168
243
*/
@@ -171,6 +246,71 @@ public final Builder queryVector(Double value, Double... values) {
171
246
return this ;
172
247
}
173
248
249
+ /**
250
+ * Required - The final number of nearest neighbors to return as top hits
251
+ * <p>
252
+ * API name: {@code k}
253
+ */
254
+ public final Builder k (long value ) {
255
+ this .k = value ;
256
+ return this ;
257
+ }
258
+
259
+ /**
260
+ * Required - The number of nearest neighbor candidates to consider per shard
261
+ * <p>
262
+ * API name: {@code num_candidates}
263
+ */
264
+ public final Builder numCandidates (long value ) {
265
+ this .numCandidates = value ;
266
+ return this ;
267
+ }
268
+
269
+ /**
270
+ * Boost value to apply to kNN scores
271
+ * <p>
272
+ * API name: {@code boost}
273
+ */
274
+ public final Builder boost (@ Nullable Float value ) {
275
+ this .boost = value ;
276
+ return this ;
277
+ }
278
+
279
+ /**
280
+ * Filters for the kNN search query
281
+ * <p>
282
+ * API name: {@code filter}
283
+ * <p>
284
+ * Adds all elements of <code>list</code> to <code>filter</code>.
285
+ */
286
+ public final Builder filter (List <Query > list ) {
287
+ this .filter = _listAddAll (this .filter , list );
288
+ return this ;
289
+ }
290
+
291
+ /**
292
+ * Filters for the kNN search query
293
+ * <p>
294
+ * API name: {@code filter}
295
+ * <p>
296
+ * Adds one or more values to <code>filter</code>.
297
+ */
298
+ public final Builder filter (Query value , Query ... values ) {
299
+ this .filter = _listAdd (this .filter , value , values );
300
+ return this ;
301
+ }
302
+
303
+ /**
304
+ * Filters for the kNN search query
305
+ * <p>
306
+ * API name: {@code filter}
307
+ * <p>
308
+ * Adds a value to <code>filter</code> using a builder lambda.
309
+ */
310
+ public final Builder filter (Function <Query .Builder , ObjectBuilder <Query >> fn ) {
311
+ return filter (fn .apply (new Query .Builder ()).build ());
312
+ }
313
+
174
314
@ Override
175
315
protected Builder self () {
176
316
return this ;
@@ -198,11 +338,14 @@ public KnnQuery build() {
198
338
KnnQuery ::setupKnnQueryDeserializer );
199
339
200
340
protected static void setupKnnQueryDeserializer (ObjectDeserializer <KnnQuery .Builder > op ) {
201
- QueryBase . setupQueryBaseDeserializer ( op );
341
+
202
342
op .add (Builder ::field , JsonpDeserializer .stringDeserializer (), "field" );
203
- op .add (Builder ::numCandidates , JsonpDeserializer .integerDeserializer (), "num_candidates" );
204
343
op .add (Builder ::queryVector , JsonpDeserializer .arrayDeserializer (JsonpDeserializer .doubleDeserializer ()),
205
344
"query_vector" );
345
+ op .add (Builder ::k , JsonpDeserializer .longDeserializer (), "k" );
346
+ op .add (Builder ::numCandidates , JsonpDeserializer .longDeserializer (), "num_candidates" );
347
+ op .add (Builder ::boost , JsonpDeserializer .floatDeserializer (), "boost" );
348
+ op .add (Builder ::filter , JsonpDeserializer .arrayDeserializer (Query ._DESERIALIZER ), "filter" );
206
349
207
350
}
208
351
0 commit comments