Skip to content

Commit e6b86ef

Browse files
Implement v_magnitude function (elastic#132765)
Implements v_magnitude ESQL function
1 parent 9203679 commit e6b86ef

File tree

18 files changed

+521
-36
lines changed

18 files changed

+521
-36
lines changed

docs/changelog/132765.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 132765
2+
summary: Implement `v_magnitude` function
3+
area: ES|QL
4+
type: feature
5+
issues: [132768]

docs/reference/query-languages/esql/_snippets/functions/description/v_magnitude.md

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

docs/reference/query-languages/esql/_snippets/functions/examples/v_magnitude.md

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

docs/reference/query-languages/esql/_snippets/functions/layout/v_magnitude.md

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

docs/reference/query-languages/esql/_snippets/functions/parameters/v_magnitude.md

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

docs/reference/query-languages/esql/images/functions/v_magnitude.svg

Lines changed: 1 addition & 0 deletions
Loading

docs/reference/query-languages/esql/kibana/definition/functions/v_magnitude.json

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

docs/reference/query-languages/esql/kibana/docs/functions/v_magnitude.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: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Tests for v_magnitude scalar function
2+
3+
magnitudeWithVectorField
4+
required_capability: magnitude_scalar_vector_function
5+
6+
// tag::vector-magnitude[]
7+
from colors
8+
| eval magnitude = v_magnitude(rgb_vector)
9+
| sort magnitude desc, color asc
10+
// end::vector-magnitude[]
11+
| limit 10
12+
| keep color, magnitude
13+
;
14+
15+
// tag::vector-magnitude-result[]
16+
color:text | magnitude:double
17+
white | 441.6729431152344
18+
snow | 435.9185791015625
19+
azure | 433.1858825683594
20+
ivory | 433.1858825683594
21+
mint cream | 433.0704345703125
22+
sea shell | 426.25579833984375
23+
honeydew | 424.5291442871094
24+
old lace | 420.6352233886719
25+
corn silk | 418.2451477050781
26+
linen | 415.93267822265625
27+
// end::vector-magnitude-result[]
28+
;
29+
30+
magnitudeAsPartOfExpression
31+
required_capability: magnitude_scalar_vector_function
32+
33+
from colors
34+
| eval score = round((1 + v_magnitude(rgb_vector) / 2), 3)
35+
| sort score desc, color asc
36+
| limit 10
37+
| keep color, score
38+
;
39+
40+
color:text | score:double
41+
white | 221.836
42+
snow | 218.959
43+
azure | 217.593
44+
ivory | 217.593
45+
mint cream | 217.535
46+
sea shell | 214.128
47+
honeydew | 213.265
48+
old lace | 211.318
49+
corn silk | 210.123
50+
linen | 208.966
51+
;
52+
53+
magnitudeWithLiteralVectors
54+
required_capability: magnitude_scalar_vector_function
55+
56+
row a = 1
57+
| eval magnitude = round(v_magnitude([1, 2, 3]), 3)
58+
| keep magnitude
59+
;
60+
61+
magnitude:double
62+
3.742
63+
;
64+
65+
magnitudeWithStats
66+
required_capability: magnitude_scalar_vector_function
67+
68+
from colors
69+
| eval magnitude = round(v_magnitude(rgb_vector), 3)
70+
| stats avg = round(avg(magnitude), 3), min = min(magnitude), max = max(magnitude)
71+
;
72+
73+
avg:double | min:double | max:double
74+
313.692 | 0.0 | 441.673
75+
;
76+
77+
magnitudeWithNull
78+
required_capability: magnitude_scalar_vector_function
79+
80+
row a = 1
81+
| eval magnitude = v_magnitude(null)
82+
| keep magnitude
83+
;
84+
85+
magnitude:double
86+
null
87+
;

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,11 @@ public enum Cap {
13561356
*/
13571357
CORRECT_SKIPPED_SHARDS_COUNT,
13581358

1359+
/*
1360+
* Support for calculating the scalar vector magnitude.
1361+
*/
1362+
MAGNITUDE_SCALAR_VECTOR_FUNCTION(Build.current().isSnapshot()),
1363+
13591364
/**
13601365
* Byte elements dense vector field type support.
13611366
*/

0 commit comments

Comments
 (0)