Skip to content

Commit 1a57164

Browse files
authored
EQL: Remove "fields" section from sequence in-progress searches (#74824)
1 parent 483d145 commit 1a57164

File tree

3 files changed

+73
-4
lines changed

3 files changed

+73
-4
lines changed

x-pack/plugin/eql/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/eql/10_basic.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,25 @@ setup:
8888
- match: {hits.events.2.fields.valid: [true]}
8989
- match: {hits.events.2.fields.day_of_week: ["Wednesday"]}
9090

91+
---
92+
"Execute EQL events query with wildcard (*) fields filtering.":
93+
- do:
94+
eql.search:
95+
index: eql_test
96+
body:
97+
query: 'process where user == "SYSTEM"'
98+
fields: [{"field":"*"}]
99+
100+
- match: {timed_out: false}
101+
- match: {hits.total.value: 3}
102+
- match: {hits.total.relation: "eq"}
103+
- match: {hits.events.0._id: "1"}
104+
- match: {hits.events.0.fields:{"valid":[false],"@timestamp":["2020-02-03T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Monday"]}}
105+
- match: {hits.events.1._id: "2"}
106+
- match: {hits.events.1.fields:{"valid":[true],"@timestamp":["2020-02-04T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Tuesday"]}}
107+
- match: {hits.events.2._id: "3"}
108+
- match: {hits.events.2.fields:{"valid":[true],"@timestamp":["2020-02-05T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Wednesday"]}}
109+
91110
---
92111
"Execute EQL events query with filter_path":
93112
- do:
@@ -218,6 +237,50 @@ setup:
218237
- match: {hits.sequences.1.events.1.fields.valid: [true]}
219238
- match: {hits.sequences.1.events.1.fields.day_of_week: ["Wednesday"]}
220239

240+
---
241+
"Execute EQL sequence with wildcard (*) fields filtering.":
242+
- do:
243+
eql.search:
244+
index: eql_test
245+
body:
246+
query: 'sequence by user [process where user == "SYSTEM"] [process where true]'
247+
fields: [{"field":"*"}]
248+
- match: {timed_out: false}
249+
- match: {hits.total.value: 2}
250+
- match: {hits.total.relation: "eq"}
251+
- match: {hits.sequences.0.join_keys.0: "SYSTEM"}
252+
- match: {hits.sequences.0.events.0._id: "1"}
253+
- match: {hits.sequences.0.events.0.fields:{"valid":[false],"@timestamp":["2020-02-03T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Monday"]}}
254+
- match: {hits.sequences.0.events.1._id: "2"}
255+
- match: {hits.sequences.0.events.1.fields:{"valid":[true],"@timestamp":["2020-02-04T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Tuesday"]}}
256+
- match: {hits.sequences.1.join_keys.0: "SYSTEM"}
257+
- match: {hits.sequences.1.events.0._id: "2"}
258+
- match: {hits.sequences.1.events.0.fields:{"valid":[true],"@timestamp":["2020-02-04T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Tuesday"]}}
259+
- match: {hits.sequences.1.events.1._id: "3"}
260+
- match: {hits.sequences.1.events.1.fields:{"valid":[true],"@timestamp":["2020-02-05T12:34:56.000Z"],"event.category":["process"],"event.category.keyword":["process"],"id":[123],"user.keyword":["SYSTEM"],"user":["SYSTEM"],"day_of_week":["Wednesday"]}}
261+
262+
---
263+
"Execute EQL sequence with custom format for timestamp field.":
264+
- do:
265+
eql.search:
266+
index: eql_test
267+
body:
268+
query: 'sequence by user [process where user == "SYSTEM"] [process where true]'
269+
fields: [{"field":"@timestamp","format":"yyyy"},{"field":"day_of_week"}]
270+
- match: {timed_out: false}
271+
- match: {hits.total.value: 2}
272+
- match: {hits.total.relation: "eq"}
273+
- match: {hits.sequences.0.join_keys.0: "SYSTEM"}
274+
- match: {hits.sequences.0.events.0._id: "1"}
275+
- match: {hits.sequences.0.events.0.fields:{"@timestamp":["2020"],"day_of_week":["Monday"]}}
276+
- match: {hits.sequences.0.events.1._id: "2"}
277+
- match: {hits.sequences.0.events.1.fields:{"@timestamp":["2020"],"day_of_week":["Tuesday"]}}
278+
- match: {hits.sequences.1.join_keys.0: "SYSTEM"}
279+
- match: {hits.sequences.1.events.0._id: "2"}
280+
- match: {hits.sequences.1.events.0.fields:{"@timestamp":["2020"],"day_of_week":["Tuesday"]}}
281+
- match: {hits.sequences.1.events.1._id: "3"}
282+
- match: {hits.sequences.1.events.1.fields:{"@timestamp":["2020"],"day_of_week":["Wednesday"]}}
283+
221284
---
222285
"Execute EQL sequence with filter_path":
223286
- do:

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/execution/assembler/ExecutionManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public Executable assemble(List<List<Attribute>> listOfKeys,
9292
PhysicalPlan query = plans.get(i);
9393
// search query
9494
if (query instanceof EsQueryExec) {
95-
SearchSourceBuilder source = ((EsQueryExec) query).source(session);
95+
SearchSourceBuilder source = ((EsQueryExec) query).source(session, false);
9696
QueryRequest original = () -> source;
9797
BoxedQueryRequest boxedRequest = new BoxedQueryRequest(original, timestampName, keyFields);
9898
Criterion<BoxedQueryRequest> criterion =

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plan/physical/EsQueryExec.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,22 @@ public List<Attribute> output() {
5252
return output;
5353
}
5454

55-
public SearchSourceBuilder source(EqlSession session) {
55+
56+
/*
57+
* {@param includeFetchFields} should be true for event queries and false for in progress sequence queries
58+
* Fetching fields during in progress sequence queries is unnecessary.
59+
*/
60+
public SearchSourceBuilder source(EqlSession session, boolean includeFetchFields) {
5661
EqlConfiguration cfg = session.configuration();
5762
// by default use the configuration size
58-
return SourceGenerator.sourceBuilder(queryContainer, cfg.filter(), cfg.fetchFields(), cfg.runtimeMappings());
63+
return SourceGenerator.sourceBuilder(queryContainer, cfg.filter(), includeFetchFields ? cfg.fetchFields() : null,
64+
cfg.runtimeMappings());
5965
}
6066

6167
@Override
6268
public void execute(EqlSession session, ActionListener<Payload> listener) {
6369
// endpoint - fetch all source
64-
QueryRequest request = () -> source(session).fetchSource(FetchSourceContext.FETCH_SOURCE);
70+
QueryRequest request = () -> source(session, true).fetchSource(FetchSourceContext.FETCH_SOURCE);
6571
listener = shouldReverse(request) ? new ReverseListener(listener) : listener;
6672
new BasicQueryClient(session).query(request, new AsEventListener(listener));
6773
}

0 commit comments

Comments
 (0)