17
17
import org .opensearch .client .json .ObjectBuilderDeserializer ;
18
18
import org .opensearch .client .json .ObjectDeserializer ;
19
19
import org .opensearch .client .util .ApiTypeHelper ;
20
+ import org .opensearch .client .util .MissingRequiredPropertiesException ;
20
21
import org .opensearch .client .util .ObjectBuilder ;
21
22
22
23
@ JsonpDeserializable
23
24
public class NeuralQuery extends QueryBase implements QueryVariant {
24
25
25
26
private final String field ;
26
27
private final String queryText ;
28
+ private final String queryImage ;
27
29
private final int k ;
28
30
@ Nullable
29
31
private final String modelId ;
@@ -34,7 +36,11 @@ private NeuralQuery(NeuralQuery.Builder builder) {
34
36
super (builder );
35
37
36
38
this .field = ApiTypeHelper .requireNonNull (builder .field , this , "field" );
37
- this .queryText = ApiTypeHelper .requireNonNull (builder .queryText , this , "queryText" );
39
+ if (builder .queryText == null && builder .queryImage == null && !ApiTypeHelper .requiredPropertiesCheckDisabled ()) {
40
+ throw new MissingRequiredPropertiesException (this , "queryText" , "queryImage" );
41
+ }
42
+ this .queryText = builder .queryText ;
43
+ this .queryImage = builder .queryImage ;
38
44
this .k = ApiTypeHelper .requireNonNull (builder .k , this , "k" );
39
45
this .modelId = builder .modelId ;
40
46
this .filter = builder .filter ;
@@ -64,14 +70,25 @@ public final String field() {
64
70
}
65
71
66
72
/**
67
- * Required - Search query text.
73
+ * Required - The query_text if query_image is not set.
74
+ * Optional - The query_text if query_image is set.
68
75
*
69
76
* @return Search query text.
70
77
*/
71
78
public final String queryText () {
72
79
return this .queryText ;
73
80
}
74
81
82
+ /**
83
+ * Required - The query_image if query_text is not set.
84
+ * Optional - The query_image if query_text is set.
85
+ *
86
+ * @return Search query image.
87
+ */
88
+ public final String queryImage () {
89
+ return this .queryImage ;
90
+ }
91
+
75
92
/**
76
93
* Required - The number of neighbors to return.
77
94
*
@@ -112,7 +129,13 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
112
129
113
130
super .serializeInternal (generator , mapper );
114
131
115
- generator .write ("query_text" , this .queryText );
132
+ if (this .queryText != null ) {
133
+ generator .write ("query_text" , this .queryText );
134
+ }
135
+
136
+ if (this .queryImage != null ) {
137
+ generator .write ("query_image" , this .queryImage );
138
+ }
116
139
117
140
if (this .modelId != null ) {
118
141
generator .write ("model_id" , this .modelId );
@@ -129,7 +152,7 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
129
152
}
130
153
131
154
public Builder toBuilder () {
132
- return new Builder ().field (field ).queryText (queryText ).k (k ).modelId (modelId ).filter (filter );
155
+ return new Builder ().field (field ).queryText (queryText ).queryImage ( queryImage ). k (k ).modelId (modelId ).filter (filter );
133
156
}
134
157
135
158
/**
@@ -138,6 +161,7 @@ public Builder toBuilder() {
138
161
public static class Builder extends QueryBase .AbstractBuilder <NeuralQuery .Builder > implements ObjectBuilder <NeuralQuery > {
139
162
private String field ;
140
163
private String queryText ;
164
+ private String queryImage ;
141
165
private Integer k ;
142
166
@ Nullable
143
167
private String modelId ;
@@ -156,7 +180,8 @@ public NeuralQuery.Builder field(@Nullable String field) {
156
180
}
157
181
158
182
/**
159
- * Required - Search query text.
183
+ * Required - The query_text if query_image is not set.
184
+ * Optional - The query_text if query_image is set.
160
185
*
161
186
* @param queryText Search query text.
162
187
* @return This builder.
@@ -166,6 +191,18 @@ public NeuralQuery.Builder queryText(@Nullable String queryText) {
166
191
return this ;
167
192
}
168
193
194
+ /**
195
+ * Required - The query_image if query_text is not set.
196
+ * Optional - The query_image if query_text is set.
197
+ *
198
+ * @param queryImage Search query image.
199
+ * @return This builder.
200
+ */
201
+ public NeuralQuery .Builder queryImage (@ Nullable String queryImage ) {
202
+ this .queryImage = queryImage ;
203
+ return this ;
204
+ }
205
+
169
206
/**
170
207
* Optional - The model_id field if the default model for the index or field is set.
171
208
* Required - The model_id field if there is no default model set for the index or field.
@@ -227,6 +264,7 @@ protected static void setupNeuralQueryDeserializer(ObjectDeserializer<NeuralQuer
227
264
setupQueryBaseDeserializer (op );
228
265
229
266
op .add (NeuralQuery .Builder ::queryText , JsonpDeserializer .stringDeserializer (), "query_text" );
267
+ op .add (NeuralQuery .Builder ::queryImage , JsonpDeserializer .stringDeserializer (), "query_image" );
230
268
op .add (NeuralQuery .Builder ::modelId , JsonpDeserializer .stringDeserializer (), "model_id" );
231
269
op .add (NeuralQuery .Builder ::k , JsonpDeserializer .integerDeserializer (), "k" );
232
270
op .add (NeuralQuery .Builder ::filter , Query ._DESERIALIZER , "filter" );
0 commit comments