Skip to content

Commit 0c0f77e

Browse files
committed
Name
1 parent 450d81f commit 0c0f77e

File tree

1 file changed

+57
-29
lines changed
  • x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node

1 file changed

+57
-29
lines changed

x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/PushQueriesIT.java

Lines changed: 57 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,13 @@ public static List<Object[]> args() {
6363

6464
public enum Type {
6565
AUTO(false),
66+
6667
CONSTANT_KEYWORD(false),
6768
KEYWORD(false),
68-
// NOCOMMIT all these without keyword
69+
MATCH_ONLY_TEXT(false),
70+
SEMANTIC_TEXT(true),
71+
TEXT(false),
72+
6973
MATCH_ONLY_TEXT_WITH_KEYWORD(false),
7074
SEMANTIC_TEXT_WITH_KEYWORD(true),
7175
TEXT_WITH_KEYWORD(false);
@@ -91,13 +95,14 @@ public void testEquality() throws IOException {
9195
""";
9296
String luceneQuery = switch (type) {
9397
case AUTO, TEXT_WITH_KEYWORD -> "#test.keyword:%value -_ignored:test.keyword";
94-
case KEYWORD -> "test:%value";
95-
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> "*:*";
96-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
98+
case KEYWORD, TEXT -> "test:%value";
99+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD -> "*:*";
100+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
97101
};
98102
ComputeSignature dataNodeSignature = switch (type) {
99103
case AUTO, CONSTANT_KEYWORD, KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
100-
case MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
104+
case MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD ->
105+
ComputeSignature.FILTER_IN_COMPUTE;
101106
};
102107
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
103108
}
@@ -109,14 +114,15 @@ public void testEqualityTooBigToPush() throws IOException {
109114
| WHERE test == "%value"
110115
""";
111116
List<String> luceneQuery = switch (type) {
112-
case AUTO, TEXT_WITH_KEYWORD -> emulateLargeTextTokens(value);
113-
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> List.of("*:*");
117+
case AUTO, TEXT, TEXT_WITH_KEYWORD -> emulateLargeTextTokens(value);
118+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD -> List.of("*:*");
114119
case KEYWORD -> List.of("#test:%value #single_value_match(test)");
115-
case SEMANTIC_TEXT_WITH_KEYWORD -> List.of("FieldExistsQuery [field=_primary_term]");
120+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> List.of("FieldExistsQuery [field=_primary_term]");
116121
};
117122
ComputeSignature dataNodeSignature = switch (type) {
118123
case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
119-
case AUTO, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
124+
case AUTO, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD ->
125+
ComputeSignature.FILTER_IN_COMPUTE;
120126
};
121127
testPushQuery(value, esqlQuery, luceneQuery, dataNodeSignature, type != Type.KEYWORD);
122128
}
@@ -125,7 +131,7 @@ public void testEqualityTooBigToPush() throws IOException {
125131
* {@code NOT !=} should function just like {@code ==}.
126132
*/
127133
public void testNotInequality() throws IOException {
128-
// NOCOMMIT
134+
// NOCOMMIT copy from previous commit
129135

130136
}
131137

@@ -140,13 +146,14 @@ public void testEqualityOrTooBig() throws IOException {
140146
| WHERE test == "%value" OR test == "%tooBig"
141147
""".replace("%tooBig", tooBig);
142148
String luceneQuery = switch (type) {
143-
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> "*:*";
149+
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD -> "*:*";
144150
case KEYWORD -> "test:(%tooBig %value)".replace("%tooBig", tooBig);
145-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
151+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
146152
};
147153
ComputeSignature dataNodeSignature = switch (type) {
148154
case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
149-
case AUTO, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
155+
case AUTO, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD ->
156+
ComputeSignature.FILTER_IN_COMPUTE;
150157
};
151158
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
152159
}
@@ -159,13 +166,15 @@ public void testEqualityOrOther() throws IOException {
159166
""";
160167
String luceneQuery = switch (type) {
161168
case AUTO, TEXT_WITH_KEYWORD -> "(#test.keyword:%value -_ignored:test.keyword) foo:[2 TO 2]";
169+
case TEXT -> "#test:%value foo:[2 TO 2]";
162170
case KEYWORD -> "test:%value foo:[2 TO 2]";
163-
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> "*:*";
164-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
171+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD -> "*:*";
172+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
165173
};
166174
ComputeSignature dataNodeSignature = switch (type) {
167175
case AUTO, CONSTANT_KEYWORD, KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
168-
case MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
176+
case MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT ->
177+
ComputeSignature.FILTER_IN_COMPUTE;
169178
};
170179
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
171180
}
@@ -178,9 +187,10 @@ public void testEqualityAndOther() throws IOException {
178187
""";
179188
List<String> luceneQueryOptions = switch (type) {
180189
case AUTO, TEXT_WITH_KEYWORD -> List.of("#test.keyword:%value -_ignored:test.keyword #foo:[1 TO 1]");
190+
case TEXT -> List.of("#foo:[1 TO 1] #test:%value");
181191
case KEYWORD -> List.of("#test:%value #foo:[1 TO 1]");
182-
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> List.of("foo:[1 TO 1]");
183-
case SEMANTIC_TEXT_WITH_KEYWORD ->
192+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD -> List.of("foo:[1 TO 1]");
193+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD ->
184194
/*
185195
* single_value_match is here because there are extra documents hiding in the index
186196
* that don't have the `foo` field.
@@ -189,7 +199,8 @@ public void testEqualityAndOther() throws IOException {
189199
};
190200
ComputeSignature dataNodeSignature = switch (type) {
191201
case AUTO, CONSTANT_KEYWORD, KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
192-
case MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
202+
case MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT ->
203+
ComputeSignature.FILTER_IN_COMPUTE;
193204
};
194205
testPushQuery(value, esqlQuery, luceneQueryOptions, dataNodeSignature, true);
195206
}
@@ -202,13 +213,14 @@ public void testInequality() throws IOException {
202213
""";
203214
String luceneQuery = switch (type) {
204215
case AUTO, TEXT_WITH_KEYWORD -> "(-test.keyword:%different_value #*:*) _ignored:test.keyword";
205-
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> "*:*";
216+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT -> "*:*";
206217
case KEYWORD -> "-test:%different_value #*:*";
207-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
218+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
208219
};
209220
ComputeSignature dataNodeSignature = switch (type) {
210221
case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
211-
case AUTO, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
222+
case AUTO, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD ->
223+
ComputeSignature.FILTER_IN_COMPUTE;
212224
};
213225
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
214226
}
@@ -220,12 +232,13 @@ public void testInequalityTooBigToPush() throws IOException {
220232
| WHERE test != "%value"
221233
""";
222234
String luceneQuery = switch (type) {
223-
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> "*:*";
235+
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD -> "*:*";
224236
case KEYWORD -> "-test:%value #single_value_match(test)";
225-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
237+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
226238
};
227239
ComputeSignature dataNodeSignature = switch (type) {
228-
case AUTO, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
240+
case AUTO, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD ->
241+
ComputeSignature.FILTER_IN_COMPUTE;
229242
case CONSTANT_KEYWORD -> ComputeSignature.FIND_NONE;
230243
case KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
231244
};
@@ -239,13 +252,14 @@ public void testCaseInsensitiveEquality() throws IOException {
239252
| WHERE TO_LOWER(test) == "%value"
240253
""";
241254
String luceneQuery = switch (type) {
242-
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> "*:*";
255+
case AUTO, CONSTANT_KEYWORD, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD -> "*:*";
243256
case KEYWORD -> "CaseInsensitiveTermQuery{test:%value}";
244-
case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
257+
case SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
245258
};
246259
ComputeSignature dataNodeSignature = switch (type) {
247260
case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
248-
case AUTO, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD, TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
261+
case AUTO, MATCH_ONLY_TEXT, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT, SEMANTIC_TEXT_WITH_KEYWORD, TEXT, TEXT_WITH_KEYWORD ->
262+
ComputeSignature.FILTER_IN_COMPUTE;
249263
};
250264
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
251265
}
@@ -360,8 +374,9 @@ private void indexValue(String value) throws IOException {
360374
}""";
361375
json += switch (type) {
362376
case AUTO -> "";
363-
case CONSTANT_KEYWORD -> justType();
377+
case CONSTANT_KEYWORD, MATCH_ONLY_TEXT, TEXT -> justType();
364378
case KEYWORD -> keyword();
379+
case SEMANTIC_TEXT -> justSemanticText();
365380
case SEMANTIC_TEXT_WITH_KEYWORD -> semanticTextWithKeyword();
366381
case TEXT_WITH_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD -> typeWithKeyword();
367382
};
@@ -426,6 +441,19 @@ private String typeWithKeyword() {
426441
}""".replace("%type", type.name().replace("_WITH_KEYWORD", "").toLowerCase(Locale.ROOT));
427442
}
428443

444+
private String justSemanticText() {
445+
return """
446+
,
447+
"mappings": {
448+
"properties": {
449+
"test": {
450+
"type": "semantic_text",
451+
"inference_id": "test"
452+
}
453+
}
454+
}""";
455+
}
456+
429457
private String semanticTextWithKeyword() {
430458
return """
431459
,

0 commit comments

Comments
 (0)