2121// THIS CODE IS GENERATED. MANUAL EDITS WILL BE LOST.
2222//----------------------------------------------------
2323
24- package co .elastic .clients .elasticsearch ._types . query_dsl ;
24+ package co .elastic .clients .elasticsearch ._types ;
2525
26+ import co .elastic .clients .elasticsearch ._types .query_dsl .Query ;
2627import co .elastic .clients .json .JsonpDeserializable ;
2728import co .elastic .clients .json .JsonpDeserializer ;
2829import co .elastic .clients .json .JsonpMapper ;
30+ import co .elastic .clients .json .JsonpSerializable ;
31+ import co .elastic .clients .json .JsonpUtils ;
2932import co .elastic .clients .json .ObjectBuilderDeserializer ;
3033import co .elastic .clients .json .ObjectDeserializer ;
3134import co .elastic .clients .util .ApiTypeHelper ;
3235import co .elastic .clients .util .ObjectBuilder ;
36+ import co .elastic .clients .util .WithJsonObjectBuilderBase ;
3337import jakarta .json .stream .JsonGenerator ;
3438import java .lang .Double ;
35- import java .lang .Integer ;
39+ import java .lang .Float ;
40+ import java .lang .Long ;
3641import java .lang .String ;
3742import java .util .List ;
3843import java .util .Objects ;
3944import java .util .function .Function ;
4045import javax .annotation .Nullable ;
4146
42- // typedef: _types.query_dsl. KnnQuery
47+ // typedef: _types.KnnQuery
4348
4449/**
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
4952 * specification</a>
5053 */
5154@ JsonpDeserializable
52- public class KnnQuery extends QueryBase implements QueryVariant {
55+ public class KnnQuery implements JsonpSerializable {
5356 private final String field ;
5457
55- private final int numCandidates ;
56-
5758 private final List <Double > queryVector ;
5859
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+
5969 // ---------------------------------------------------------------------------------------------
6070
6171 private KnnQuery (Builder builder ) {
62- super (builder );
6372
6473 this .field = ApiTypeHelper .requireNonNull (builder .field , this , "field" );
65- this .numCandidates = ApiTypeHelper .requireNonNull (builder .numCandidates , this , "numCandidates" );
6674 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 );
6779
6880 }
6981
@@ -72,43 +84,74 @@ public static KnnQuery of(Function<Builder, ObjectBuilder<KnnQuery>> fn) {
7284 }
7385
7486 /**
75- * Query variant kind.
87+ * Required - The name of the vector field to search against
88+ * <p>
89+ * API name: {@code field}
7690 */
77- @ Override
78- public Query .Kind _queryKind () {
79- return Query .Kind .Knn ;
91+ public final String field () {
92+ return this .field ;
8093 }
8194
8295 /**
83- * Required - API name: {@code field}
96+ * Required - The query vector
97+ * <p>
98+ * API name: {@code query_vector}
8499 */
85- public final String field () {
86- return this .field ;
100+ public final List < Double > queryVector () {
101+ return this .queryVector ;
87102 }
88103
89104 /**
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}
91108 */
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 () {
93119 return this .numCandidates ;
94120 }
95121
96122 /**
97- * Required - API name: {@code query_vector}
123+ * Boost value to apply to kNN scores
124+ * <p>
125+ * API name: {@code boost}
98126 */
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 ();
101148 }
102149
103150 protected void serializeInternal (JsonGenerator generator , JsonpMapper mapper ) {
104151
105- super .serializeInternal (generator , mapper );
106152 generator .writeKey ("field" );
107153 generator .write (this .field );
108154
109- generator .writeKey ("num_candidates" );
110- generator .write (this .numCandidates );
111-
112155 if (ApiTypeHelper .isDefined (this .queryVector )) {
113156 generator .writeKey ("query_vector" );
114157 generator .writeStartArray ();
@@ -119,7 +162,33 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
119162 generator .writeEnd ();
120163
121164 }
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 );
122181
182+ }
183+ generator .writeEnd ();
184+
185+ }
186+
187+ }
188+
189+ @ Override
190+ public String toString () {
191+ return JsonpUtils .toString (this );
123192 }
124193
125194 // ---------------------------------------------------------------------------------------------
@@ -128,31 +197,35 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
128197 * Builder for {@link KnnQuery}.
129198 */
130199
131- public static class Builder extends QueryBase . AbstractBuilder <Builder > implements ObjectBuilder <KnnQuery > {
200+ public static class Builder extends WithJsonObjectBuilderBase <Builder > implements ObjectBuilder <KnnQuery > {
132201 private String field ;
133202
134- private Integer numCandidates ;
135-
136203 private List <Double > queryVector ;
137204
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+
138215 /**
139- * Required - API name: {@code field}
216+ * Required - The name of the vector field to search against
217+ * <p>
218+ * API name: {@code field}
140219 */
141220 public final Builder field (String value ) {
142221 this .field = value ;
143222 return this ;
144223 }
145224
146225 /**
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}
156229 * <p>
157230 * Adds all elements of <code>list</code> to <code>queryVector</code>.
158231 */
@@ -162,7 +235,9 @@ public final Builder queryVector(List<Double> list) {
162235 }
163236
164237 /**
165- * Required - API name: {@code query_vector}
238+ * Required - The query vector
239+ * <p>
240+ * API name: {@code query_vector}
166241 * <p>
167242 * Adds one or more values to <code>queryVector</code>.
168243 */
@@ -171,6 +246,71 @@ public final Builder queryVector(Double value, Double... values) {
171246 return this ;
172247 }
173248
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+
174314 @ Override
175315 protected Builder self () {
176316 return this ;
@@ -198,11 +338,14 @@ public KnnQuery build() {
198338 KnnQuery ::setupKnnQueryDeserializer );
199339
200340 protected static void setupKnnQueryDeserializer (ObjectDeserializer <KnnQuery .Builder > op ) {
201- QueryBase . setupQueryBaseDeserializer ( op );
341+
202342 op .add (Builder ::field , JsonpDeserializer .stringDeserializer (), "field" );
203- op .add (Builder ::numCandidates , JsonpDeserializer .integerDeserializer (), "num_candidates" );
204343 op .add (Builder ::queryVector , JsonpDeserializer .arrayDeserializer (JsonpDeserializer .doubleDeserializer ()),
205344 "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" );
206349
207350 }
208351
0 commit comments