Skip to content

Commit 0ff90a6

Browse files
authored
Ensure nested field could be used in lookup joins (#118963) (#119073)
1 parent 565a977 commit 0ff90a6

File tree

4 files changed

+82
-0
lines changed

4 files changed

+82
-0
lines changed

x-pack/plugin/esql/qa/testFixtures/src/main/java/org/elasticsearch/xpack/esql/CsvTestsDataLoader.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ public class CsvTestsDataLoader {
6464
.withSetting("languages_lookup-settings.json");
6565
private static final TestsDataset LANGUAGES_LOOKUP_NON_UNIQUE_KEY = LANGUAGES_LOOKUP.withIndex("languages_lookup_non_unique_key")
6666
.withData("languages_non_unique_key.csv");
67+
private static final TestsDataset LANGUAGES_NESTED_FIELDS = new TestsDataset(
68+
"languages_nested_fields",
69+
"mapping-languages_nested_fields.json",
70+
"languages_nested_fields.csv"
71+
).withSetting("languages_lookup-settings.json");
6772
private static final TestsDataset ALERTS = new TestsDataset("alerts");
6873
private static final TestsDataset UL_LOGS = new TestsDataset("ul_logs");
6974
private static final TestsDataset SAMPLE_DATA = new TestsDataset("sample_data");
@@ -116,6 +121,7 @@ public class CsvTestsDataLoader {
116121
Map.entry(LANGUAGES.indexName, LANGUAGES),
117122
Map.entry(LANGUAGES_LOOKUP.indexName, LANGUAGES_LOOKUP),
118123
Map.entry(LANGUAGES_LOOKUP_NON_UNIQUE_KEY.indexName, LANGUAGES_LOOKUP_NON_UNIQUE_KEY),
124+
Map.entry(LANGUAGES_NESTED_FIELDS.indexName, LANGUAGES_NESTED_FIELDS),
119125
Map.entry(UL_LOGS.indexName, UL_LOGS),
120126
Map.entry(SAMPLE_DATA.indexName, SAMPLE_DATA),
121127
Map.entry(MV_SAMPLE_DATA.indexName, MV_SAMPLE_DATA),
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
_id:integer,language.id:integer,language.name:text,language.code:keyword
2+
1,1,English,EN
3+
2,2,French,FR
4+
3,3,Spanish,ES
5+
4,4,German,DE

x-pack/plugin/esql/qa/testFixtures/src/main/resources/lookup-join.csv-spec

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,55 @@ language_code:integer | language_name:keyword | country:keyword
416416
8 | Mv-Lang2 | Mv-Land2
417417
;
418418

419+
###########################################################################
420+
# nested filed join behavior with languages_nested_fields index
421+
###########################################################################
422+
423+
joinOnNestedField
424+
required_capability: join_lookup_v8
425+
426+
FROM employees
427+
| WHERE 10000 < emp_no AND emp_no < 10006
428+
| EVAL language.id = emp_no % 10
429+
| LOOKUP JOIN languages_nested_fields ON language.id
430+
| SORT emp_no
431+
| KEEP emp_no, language.id, language.name
432+
;
433+
434+
emp_no:integer | language.id:integer | language.name:text
435+
10001 | 1 | English
436+
10002 | 2 | French
437+
10003 | 3 | Spanish
438+
10004 | 4 | German
439+
10005 | 5 | null
440+
;
441+
442+
443+
joinOnNestedFieldRow
444+
required_capability: join_lookup_v8
445+
446+
ROW language.code = "EN"
447+
| LOOKUP JOIN languages_nested_fields ON language.code
448+
| KEEP language.id, language.code, language.name.keyword
449+
;
450+
451+
language.id:integer | language.code:keyword | language.name.keyword:keyword
452+
1 | EN | English
453+
;
454+
455+
456+
joinOnNestedNestedFieldRow
457+
required_capability: join_lookup_v8
458+
459+
ROW language.name.keyword = "English"
460+
| LOOKUP JOIN languages_nested_fields ON language.name.keyword
461+
| KEEP language.id, language.name, language.name.keyword
462+
;
463+
464+
language.id:integer | language.name:text | language.name.keyword:keyword
465+
1 | English | English
466+
;
467+
419468
###############################################
420469
# Tests with clientips_lookup index
421470
###############################################
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"properties" : {
3+
"language" : {
4+
"properties" : {
5+
"id": {
6+
"type": "integer"
7+
},
8+
"name": {
9+
"type": "text",
10+
"fields": {
11+
"keyword": {
12+
"type": "keyword"
13+
}
14+
}
15+
},
16+
"code": {
17+
"type": "keyword"
18+
}
19+
}
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)