elasticsearch/docs/reference/esql/functions
Craig Taverner 2380492fac
ESQL: Support ST_CONTAINS and ST_WITHIN (#106503)
* WIP Started adding ST_CONTAINS

* Add generated evaluators

* Reduced warnings and use correct evaluators

* Refactored tests to remove duplicate code, and fixed Contains/multi-components

* Gradle build disallows using getDeclaredField

* Fixed cases where rectangles cross the dateline

* Fixed meta function tests

* Added ST_WITHIN to support inverting ST_CONTAINS

If the ST_CONTAINS is called with the constant on the left, we either have to create a lot more Evaluators to cover that case, or we have to invert it to ST_WITHIN. This inversion was a much easier option.

* Simplify inversion logic

* Add comment on choice of surrogate approach

* Add unit tests and missing fold() function

* Simple code cleanup

* Add integration tests for literals

* Add more integration tests based on actual data

* Generated documentation files

* Add documentation

* Fixed failing function count test

* Add tests that push-to-source works for ST_CONTAINS and ST_WITHIN

* Test more combinations of WITH/CONTAINS and literal on right and left

This also verifies that the re-writing of CONTAINS to WITHIN or vice versa occurs when the literal is on the left.

* test that physical planning also handles doc-values from STATS

* Added more tests for WITHIN/CONTAINS together with CENTROID

This should test the doc-values for points.

* Add cartesian_point tests

* Add cartesian_shape tests

* Disable Lucene-push-down for CARTESIAN data

This is a limitation in Lucene, which we could address as a performance optimization in a future PR, but since it probably requires Lucene changes, it cannot be done in this work.

* Fix doc links

* Added test data and tests for cartesian multi-polygons

Testing INTERSECTS, CONTAINS and WITHIN with multi-polydon fields

* Use required features for spatial points, shapes and centroid

* 8.13.0 is not yet historical version

This needs to be reverted as soon as 8.13.0 is released

* Added st_intersects and st_contains_within 'features'

* Code review updates

* Re-enable lucene push-down

* Added more required_features

* Fix point contains non-point

* Fix point contains point

* Re-enable lucene push-down in tests too

Forgot to change the physical planner unit tests after re-enabling lucene push-down

* Generate automatic docs

* Use generated examples docs

* Generated examples use '-result' prefix (singular)

* Mark spatial functions as preview/experimental
2024-04-02 10:31:00 +02:00
..
description ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
examples ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
layout ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
parameters ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
signature ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
types ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
README.md Fix typo in functions/README.md (#106870) 2024-03-28 14:02:47 +01:00
aggregation-functions.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
auto_bucket.asciidoc
avg.asciidoc
binary.asciidoc
case.asciidoc
cidr_match.asciidoc
coalesce.asciidoc
concat.asciidoc
conditional-functions-and-expressions.asciidoc
cosh.asciidoc
count-distinct.asciidoc
count.asciidoc
date-time-functions.asciidoc
date_diff.asciidoc
date_extract.asciidoc
date_format.asciidoc
date_parse.asciidoc
date_trunc.asciidoc
e.asciidoc
ends_with.asciidoc
floor.asciidoc
greatest.asciidoc
in.asciidoc
least.asciidoc
length.asciidoc
like.asciidoc
log.asciidoc
log10.asciidoc
logical.asciidoc
ltrim.asciidoc
math-functions.asciidoc ESQL: Generate docs for the trig functions (#106891) 2024-03-29 12:24:31 -04:00
max.asciidoc
median-absolute-deviation.asciidoc
median.asciidoc
min.asciidoc
mv-functions.asciidoc
mv_avg.asciidoc
mv_concat.asciidoc
mv_count.asciidoc
mv_dedupe.asciidoc
mv_first.asciidoc
mv_last.asciidoc
mv_max.asciidoc
mv_median.asciidoc
mv_min.asciidoc
mv_slice.asciidoc
mv_sort.asciidoc
mv_sum.asciidoc
mv_zip.asciidoc
now.asciidoc
operators.asciidoc
percentile.asciidoc
pi.asciidoc
pow.asciidoc
predicates.asciidoc
replace.asciidoc
right.asciidoc
rlike.asciidoc
round.asciidoc
rtrim.asciidoc
spatial-functions.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
split.asciidoc
sqrt.asciidoc
st_centroid.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
st_contains.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
st_intersects.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
st_within.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
st_x.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
st_y.asciidoc ESQL: Support ST_CONTAINS and ST_WITHIN (#106503) 2024-04-02 10:31:00 +02:00
starts_with.asciidoc
string-functions.asciidoc
substring.asciidoc
sum.asciidoc
tau.asciidoc
to_boolean.asciidoc
to_cartesianpoint.asciidoc
to_cartesianshape.asciidoc
to_datetime.asciidoc
to_degrees.asciidoc
to_double.asciidoc
to_geopoint.asciidoc
to_geoshape.asciidoc
to_integer.asciidoc
to_ip.asciidoc
to_long.asciidoc
to_lower.asciidoc
to_radians.asciidoc
to_string.asciidoc
to_unsigned_long.asciidoc
to_upper.asciidoc
to_version.asciidoc
trim.asciidoc
type-conversion-functions.asciidoc
unary.asciidoc
values.asciidoc ESQL: Values aggregation function (#106065) 2024-03-21 12:52:04 -04:00

README.md

The files in these subdirectories are generated by ESQL's test suite:

  • description - description of each function scraped from @FunctionInfo#description
  • examples - examples of each function scraped from @FunctionInfo#examples
  • parameters - description of each function's parameters scraped from @Param
  • signature - railroad diagram of the syntax to invoke each function
  • types - a table of each combination of support type for each parameter. These are generated from tests.
  • layout - a fully generated description for each function

Most functions can use the generated docs generated in the layout directory. If we need something more custom for the function we can make a file in this directory that can include:: any parts of the files above.

To regenerate the files for a function run its tests using gradle:

./gradlew :x-pack:plugin:esql:test -Dtests.class='*SinTests'

To regenerate the files for all functions run all of ESQL's tests using gradle:

./gradlew :x-pack:plugin:esql:test