Skip to content

Commit 21fe40d

Browse files
committed
[8.19] ES|QL - kNN function initial support (elastic#127322)
1 parent 3e05896 commit 21fe40d

File tree

28 files changed

+1312
-23
lines changed

28 files changed

+1312
-23
lines changed

docs/reference/esql/functions/kibana/definition/knn.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/esql/functions/kibana/docs/knn.md

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Loading

server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2354,6 +2354,11 @@ public BlockLoader blockLoader(MappedFieldType.BlockLoaderContext blContext) {
23542354
return null;
23552355
}
23562356

2357+
if (dims == null) {
2358+
// No data has been indexed yet
2359+
return BlockLoader.CONSTANT_NULLS;
2360+
}
2361+
23572362
if (indexed) {
23582363
return new BlockDocValuesReader.DenseVectorBlockLoader(name(), dims);
23592364
}

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/lucene/LuceneQueryEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private Vector evalSingleSegmentNonDecreasing(DocVector docs) throws IOException
111111
int min = docs.docs().getInt(0);
112112
int max = docs.docs().getInt(docs.getPositionCount() - 1);
113113
int length = max - min + 1;
114-
try (T scoreBuilder = createVectorBuilder(blockFactory, length)) {
114+
try (T scoreBuilder = createVectorBuilder(blockFactory, docs.getPositionCount())) {
115115
if (length == docs.getPositionCount() && length > 1) {
116116
return segmentState.scoreDense(scoreBuilder, min, max);
117117
}

x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ public void testMultipleBatchesWithLookupJoin() throws IOException {
10081008
var query = requestObjectBuilder().query(format(null, "from * | lookup join {} on integer {}", testIndexName(), sort));
10091009
Map<String, Object> result = runEsql(query);
10101010
var columns = as(result.get("columns"), List.class);
1011-
assertEquals(21, columns.size());
1011+
assertEquals(22, columns.size());
10121012
var values = as(result.get("values"), List.class);
10131013
assertEquals(10, values.size());
10141014
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public class CsvTestsDataLoader {
121121
private static final TestDataset SEMANTIC_TEXT = new TestDataset("semantic_text").withInferenceEndpoint(true);
122122
private static final TestDataset MV_TEXT = new TestDataset("mv_text");
123123
private static final TestDataset DENSE_VECTOR = new TestDataset("dense_vector");
124+
private static final TestDataset COLORS = new TestDataset("colors");
124125

125126
public static final Map<String, TestDataset> CSV_DATASET_MAP = Map.ofEntries(
126127
Map.entry(EMPLOYEES.indexName, EMPLOYEES),
@@ -171,7 +172,8 @@ public class CsvTestsDataLoader {
171172
Map.entry(BOOKS.indexName, BOOKS),
172173
Map.entry(SEMANTIC_TEXT.indexName, SEMANTIC_TEXT),
173174
Map.entry(MV_TEXT.indexName, MV_TEXT),
174-
Map.entry(DENSE_VECTOR.indexName, DENSE_VECTOR)
175+
Map.entry(DENSE_VECTOR.indexName, DENSE_VECTOR),
176+
Map.entry(COLORS.indexName, COLORS)
175177
);
176178

177179
private static final EnrichConfig LANGUAGES_ENRICH = new EnrichConfig("languages_policy", "enrich-policy-languages.json");
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
color:text,hex_code:keyword,rgb_vector:dense_vector,primary:boolean
2+
maroon, #800000, [128,0,0], false
3+
brown, #A52A2A, [165,42,42], false
4+
firebrick, #B22222, [178,34,34], false
5+
crimson, #DC143C, [220,20,60], false
6+
red, #FF0000, [255,0,0], true
7+
tomato, #FF6347, [255,99,71], false
8+
coral, #FF7F50, [255,127,80], false
9+
salmon, #FA8072, [250,128,114], false
10+
orange, #FFA500, [255,165,0], false
11+
gold, #FFD700, [255,215,0], false
12+
golden rod, #DAA520, [218,165,32], false
13+
khaki, #F0E68C, [240,230,140], false
14+
olive, #808000, [128,128,0], false
15+
yellow, #FFFF00, [255,255,0], true
16+
chartreuse, #7FFF00, [127,255,0], false
17+
green, #008000, [0,128,0], true
18+
lime, #00FF00, [0,255,0], false
19+
teal, #008080, [0,128,128], false
20+
cyan, #00FFFF, [0,255,255], true
21+
turquoise, #40E0D0, [64,224,208], false
22+
aqua marine, #7FFFD4, [127,255,212], false
23+
navy, #000080, [0,0,128], false
24+
blue, #0000FF, [0,0,255], true
25+
indigo, #4B0082, [75,0,130], false
26+
purple, #800080, [128,0,128], false
27+
thistle, #D8BFD8, [216,191,216], false
28+
plum, #DDA0DD, [221,160,221], false
29+
violet, #EE82EE, [238,130,238], false
30+
magenta, #FF00FF, [255,0,255], true
31+
orchid, #DA70D6, [218,112,214], false
32+
pink, #FFC0CB, [255,192,203], false
33+
beige, #F5F5DC, [245,245,220], false
34+
bisque, #FFE4C4, [255,228,196], false
35+
wheat, #F5DEB3, [245,222,179], false
36+
corn silk, #FFF8DC, [255,248,220], false
37+
lemon chiffon, #FFFACD, [255,250,205], false
38+
sienna, #A0522D, [160,82,45], false
39+
chocolate, #D2691E, [210,105,30], false
40+
peru, #CD853F, [205,133,63], false
41+
burly wood, #DEB887, [222,184,135], false
42+
tan, #D2B48C, [210,180,140], false
43+
moccasin, #FFE4B5, [255,228,181], false
44+
peach puff, #FFDAB9, [255,218,185], false
45+
misty rose, #FFE4E1, [255,228,225], false
46+
linen, #FAF0E6, [250,240,230], false
47+
old lace, #FDF5E6, [253,245,230], false
48+
papaya whip, #FFEFD5, [255,239,213], false
49+
sea shell, #FFF5EE, [255,245,238], false
50+
mint cream, #F5FFFA, [245,255,250], false
51+
lavender, #E6E6FA, [230,230,250], false
52+
honeydew, #F0FFF0, [240,255,240], false
53+
ivory, #FFFFF0, [255,255,240], false
54+
azure, #F0FFFF, [240,255,255], false
55+
snow, #FFFAFA, [255,250,250], false
56+
black, #000000, [0,0,0], true
57+
gray, #808080, [128,128,128], true
58+
silver, #C0C0C0, [192,192,192], false
59+
gainsboro, #DCDCDC, [220,220,220], false
60+
white, #FFFFFF, [255,255,255], true

0 commit comments

Comments
 (0)