32
32
import java .util .function .Supplier ;
33
33
34
34
import static org .elasticsearch .action .ValidateActions .addValidationError ;
35
- import static org .elasticsearch .xpack .eql .action .RequestDefaults .FETCH_SIZE ;
36
35
import static org .elasticsearch .xpack .eql .action .RequestDefaults .FIELD_EVENT_CATEGORY ;
37
36
import static org .elasticsearch .xpack .eql .action .RequestDefaults .FIELD_IMPLICIT_JOIN_KEY ;
38
37
import static org .elasticsearch .xpack .eql .action .RequestDefaults .FIELD_TIMESTAMP ;
@@ -51,7 +50,8 @@ public class EqlSearchRequest extends ActionRequest implements IndicesRequest.Re
51
50
private String tiebreakerField = null ;
52
51
private String eventCategoryField = FIELD_EVENT_CATEGORY ;
53
52
private String implicitJoinKeyField = FIELD_IMPLICIT_JOIN_KEY ;
54
- private int fetchSize = FETCH_SIZE ;
53
+ private int size = RequestDefaults .SIZE ;
54
+ private int fetchSize = RequestDefaults .FETCH_SIZE ;
55
55
private SearchAfterBuilder searchAfterBuilder ;
56
56
private String query ;
57
57
private boolean isCaseSensitive = false ;
@@ -67,6 +67,7 @@ public class EqlSearchRequest extends ActionRequest implements IndicesRequest.Re
67
67
static final String KEY_EVENT_CATEGORY_FIELD = "event_category_field" ;
68
68
static final String KEY_IMPLICIT_JOIN_KEY_FIELD = "implicit_join_key_field" ;
69
69
static final String KEY_SIZE = "size" ;
70
+ static final String KEY_FETCH_SIZE = "fetch_size" ;
70
71
static final String KEY_SEARCH_AFTER = "search_after" ;
71
72
static final String KEY_QUERY = "query" ;
72
73
static final String KEY_WAIT_FOR_COMPLETION_TIMEOUT = "wait_for_completion_timeout" ;
@@ -80,6 +81,7 @@ public class EqlSearchRequest extends ActionRequest implements IndicesRequest.Re
80
81
static final ParseField EVENT_CATEGORY_FIELD = new ParseField (KEY_EVENT_CATEGORY_FIELD );
81
82
static final ParseField IMPLICIT_JOIN_KEY_FIELD = new ParseField (KEY_IMPLICIT_JOIN_KEY_FIELD );
82
83
static final ParseField SIZE = new ParseField (KEY_SIZE );
84
+ static final ParseField FETCH_SIZE = new ParseField (KEY_FETCH_SIZE );
83
85
static final ParseField SEARCH_AFTER = new ParseField (KEY_SEARCH_AFTER );
84
86
static final ParseField QUERY = new ParseField (KEY_QUERY );
85
87
static final ParseField WAIT_FOR_COMPLETION_TIMEOUT = new ParseField (KEY_WAIT_FOR_COMPLETION_TIMEOUT );
@@ -102,6 +104,7 @@ public EqlSearchRequest(StreamInput in) throws IOException {
102
104
tiebreakerField = in .readOptionalString ();
103
105
eventCategoryField = in .readString ();
104
106
implicitJoinKeyField = in .readString ();
107
+ size = in .readVInt ();
105
108
fetchSize = in .readVInt ();
106
109
searchAfterBuilder = in .readOptionalWriteable (SearchAfterBuilder ::new );
107
110
query = in .readString ();
@@ -148,10 +151,14 @@ public ActionRequestValidationException validate() {
148
151
validationException = addValidationError ("implicit join key field is null or empty" , validationException );
149
152
}
150
153
151
- if (fetchSize <= 0 ) {
154
+ if (size <= 0 ) {
152
155
validationException = addValidationError ("size must be greater than 0" , validationException );
153
156
}
154
157
158
+ if (fetchSize < 2 ) {
159
+ validationException = addValidationError ("fetch size must be greater than 1" , validationException );
160
+ }
161
+
155
162
if (keepAlive != null && keepAlive .getMillis () < MIN_KEEP_ALIVE ) {
156
163
validationException =
157
164
addValidationError ("[keep_alive] must be greater than 1 minute, got:" + keepAlive .toString (), validationException );
@@ -173,7 +180,8 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
173
180
if (implicitJoinKeyField != null ) {
174
181
builder .field (KEY_IMPLICIT_JOIN_KEY_FIELD , implicitJoinKeyField ());
175
182
}
176
- builder .field (KEY_SIZE , fetchSize ());
183
+ builder .field (KEY_SIZE , size ());
184
+ builder .field (KEY_FETCH_SIZE , fetchSize ());
177
185
178
186
if (searchAfterBuilder != null ) {
179
187
builder .array (SEARCH_AFTER .getPreferredName (), searchAfterBuilder .getSortValues ());
@@ -204,7 +212,8 @@ protected static <R extends EqlSearchRequest> ObjectParser<R, Void> objectParser
204
212
parser .declareString (EqlSearchRequest ::tiebreakerField , TIEBREAKER_FIELD );
205
213
parser .declareString (EqlSearchRequest ::eventCategoryField , EVENT_CATEGORY_FIELD );
206
214
parser .declareString (EqlSearchRequest ::implicitJoinKeyField , IMPLICIT_JOIN_KEY_FIELD );
207
- parser .declareInt (EqlSearchRequest ::fetchSize , SIZE );
215
+ parser .declareInt (EqlSearchRequest ::size , SIZE );
216
+ parser .declareInt (EqlSearchRequest ::fetchSize , FETCH_SIZE );
208
217
parser .declareField (EqlSearchRequest ::setSearchAfter , SearchAfterBuilder ::fromXContent , SEARCH_AFTER ,
209
218
ObjectParser .ValueType .OBJECT_ARRAY );
210
219
parser .declareString (EqlSearchRequest ::query , QUERY );
@@ -259,10 +268,21 @@ public EqlSearchRequest implicitJoinKeyField(String implicitJoinKeyField) {
259
268
return this ;
260
269
}
261
270
262
- public int fetchSize () { return this .fetchSize ; }
271
+ public int size () {
272
+ return this .size ;
273
+ }
274
+
275
+ public EqlSearchRequest size (int size ) {
276
+ this .size = size ;
277
+ return this ;
278
+ }
279
+
280
+ public int fetchSize () {
281
+ return this .fetchSize ;
282
+ }
263
283
264
- public EqlSearchRequest fetchSize (int size ) {
265
- this .fetchSize = size ;
284
+ public EqlSearchRequest fetchSize (int fetchSize ) {
285
+ this .fetchSize = fetchSize ;
266
286
return this ;
267
287
}
268
288
@@ -334,6 +354,7 @@ public void writeTo(StreamOutput out) throws IOException {
334
354
out .writeOptionalString (tiebreakerField );
335
355
out .writeString (eventCategoryField );
336
356
out .writeString (implicitJoinKeyField );
357
+ out .writeVInt (size );
337
358
out .writeVInt (fetchSize );
338
359
out .writeOptionalWriteable (searchAfterBuilder );
339
360
out .writeString (query );
@@ -354,7 +375,8 @@ public boolean equals(Object o) {
354
375
return false ;
355
376
}
356
377
EqlSearchRequest that = (EqlSearchRequest ) o ;
357
- return fetchSize == that .fetchSize &&
378
+ return size == that .size &&
379
+ fetchSize == that .fetchSize &&
358
380
Arrays .equals (indices , that .indices ) &&
359
381
Objects .equals (indicesOptions , that .indicesOptions ) &&
360
382
Objects .equals (filter , that .filter ) &&
@@ -375,6 +397,7 @@ public int hashCode() {
375
397
Arrays .hashCode (indices ),
376
398
indicesOptions ,
377
399
filter ,
400
+ size ,
378
401
fetchSize ,
379
402
timestampField ,
380
403
tiebreakerField ,
0 commit comments