Skip to content

Commit 32715ce

Browse files
committed
Update CSV tests now that knn uses prefilters
1 parent 50d6e19 commit 32715ce

File tree

2 files changed

+7
-24
lines changed

2 files changed

+7
-24
lines changed

x-pack/plugin/esql/qa/testFixtures/src/main/resources/knn-function.csv-spec

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ from colors metadata _score
1111
| sort _score desc, color asc
1212
// end::knn-function[]
1313
| keep color, rgb_vector
14-
| limit 10
1514
;
1615

1716
// tag::knn-function-result[]
@@ -50,11 +49,10 @@ knnHybridSearch
5049
required_capability: knn_function_v3
5150

5251
from colors metadata _score
53-
| where match(color, "blue") or knn(rgb_vector, [65,105,225], 140)
52+
| where match(color, "blue") or knn(rgb_vector, [65,105,225], 10)
5453
| where primary == true
5554
| sort _score desc, color asc
5655
| keep color, rgb_vector
57-
| limit 10
5856
;
5957

6058
color:text | rgb_vector:dense_vector
@@ -69,17 +67,18 @@ red | [255.0, 0.0, 0.0]
6967
yellow | [255.0, 255.0, 0.0]
7068
;
7169

72-
knnWithMultipleFunctions
70+
knnWithPrefilter
7371
required_capability: knn_function_v3
7472

7573
from colors metadata _score
76-
| where knn(rgb_vector, [128,128,0], 140) and match(color, "olive")
74+
| where knn(rgb_vector, [128,128,0], 10) and (match(color, "olive") or match(color, "green"))
7775
| sort _score desc, color asc
7876
| keep color, rgb_vector
7977
;
8078

8179
color:text | rgb_vector:dense_vector
8280
olive | [128.0, 128.0, 0.0]
81+
green | [0.0, 128.0, 0.0]
8382
;
8483

8584
knnAfterKeep
@@ -163,9 +162,8 @@ yellow | #FFFF00 | [255.0, 255.0, 0.0]
163162
knnWithDisjunctionAndFiltersConjunction
164163
required_capability: knn_function_v3
165164

166-
# TODO We need kNN prefiltering here so we get more candidates that pass the filter
167165
from colors metadata _score
168-
| where (knn(rgb_vector, [0,255,255], 140) or knn(rgb_vector, [128, 0, 255], 140)) and primary == true
166+
| where (knn(rgb_vector, [0,255,255], 140) or knn(rgb_vector, [128, 0, 255], 10)) and primary == true
169167
| keep color, rgb_vector, _score
170168
| sort _score desc, color asc
171169
| drop _score
@@ -266,20 +264,3 @@ c: long | primary: boolean
266264
41 | false
267265
9 | true
268266
;
269-
270-
testKnnUsesPrefiltering
271-
required_capability: knn_function_v3
272-
273-
from colors metadata _score
274-
| where knn(rgb_vector, [255, 0, 0], 5) and primary == true
275-
| sort _score desc, color asc
276-
| keep color
277-
;
278-
279-
color:text
280-
red
281-
gray
282-
black
283-
magenta
284-
yellow
285-
;

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/KnnFunctionIT.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ public void testKnnNonPushedDown() {
113113
assertEquals(5 + Math.max(0, numDocs - 10 - 1), valuesList.size());
114114
}
115115
}
116+
116117
public void testKnnWithPrefilters() {
117118
float[] queryVector = new float[numDims];
118119
Arrays.fill(queryVector, 1.0f);
@@ -135,6 +136,7 @@ public void testKnnWithPrefilters() {
135136
assertEquals(5, valuesList.size());
136137
}
137138
}
139+
138140
public void testKnnWithLookupJoin() {
139141
float[] queryVector = new float[numDims];
140142
Arrays.fill(queryVector, 1.0f);

0 commit comments

Comments
 (0)