Skip to content

Commit f7dd604

Browse files
Support geohash, geotile and geohex grid types (#129581)
The PR at #125143 added support for `ST_GEOHASH`, `ST_GEOTILE` and `ST_GEOHEX`. However, since it used `long` as the internal type for the grid id, there was need for many additional functions for converting the `long` to and from `keyword` as well as generating `geo_shape` cell bounds for map display. Each pf these involved many more files (for the functions, their docs and the generated evaluators). With inspiration from PostGIS we decided to take a different direction, and instead use a new internal type for each grid: * `geohash` for the `ST_GEOHASH` function, created from literal using either `TO_GEOHASH(hash)` or `hash::geohash` * `geotile` for the `ST_GEOTILE` function, created from literal using either `TO_GEOTILE(tile)` or `tile::geotile` * `geohex` for the `ST_GEOHEX` function, created from literal using either `TO_GEOHEX(h3)` or `h3::geohex` This also leads to much stricter type checking as we can no longer use the `long` as a plain `long` in all functions that accept longs, or inadvertently using a geohash in a geotile function. However, the addition of new types involves a lot of boilerplate, especially considering the large number of functions that operate on all types, and need to be informed of the existence of these three new types.
1 parent dc57b3e commit f7dd604

File tree

228 files changed

+4526
-2060
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

228 files changed

+4526
-2060
lines changed

docs/changelog/129581.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 129581
2+
summary: "Support geohash, geotile and geohex grid types"
3+
area: "ES|QL"
4+
type: enhancement
5+
issues: []

docs/redirects.yml

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
redirects:
22
# Related to https://github.com/elastic/elasticsearch/pull/130716/
33
'reference/query-languages/eql/eql-ex-threat-detection.md': 'docs-content://explore-analyze/query-filter/languages/example-detect-threats-with-eql.md'
4-
4+
55
# https://github.com/elastic/elasticsearch/pull/131385
66
'reference/elasticsearch/rest-apis/retrievers.md':
77
to: 'reference/elasticsearch/rest-apis/retrievers.md'
@@ -23,7 +23,7 @@ redirects:
2323
anchors: {'rule-retriever'}
2424
- to: 'reference/elasticsearch/rest-apis/retrievers/pinned-retriever.md'
2525
anchors: {'pinned-retriever'}
26-
26+
2727
# ESQL command redirects - split from aggregate pages to individual pages
2828
'reference/query-languages/esql/commands/source-commands.md':
2929
to: 'reference/query-languages/esql/commands/source-commands.md'
@@ -35,7 +35,7 @@ redirects:
3535
anchors: {'esql-row'}
3636
- to: 'reference/query-languages/esql/commands/show.md'
3737
anchors: {'esql-show'}
38-
38+
3939
# Handle old anchor references to esql-commands.md
4040
'reference/query-languages/esql/esql-commands.md':
4141
to: 'reference/query-languages/esql/esql-commands.md'
@@ -45,7 +45,7 @@ redirects:
4545
anchors: {'esql-source-commands'}
4646
- to: 'reference/query-languages/esql/commands/processing-commands.md'
4747
anchors: {'esql-processing-commands'}
48-
48+
4949
'reference/query-languages/esql/commands/processing-commands.md':
5050
to: 'reference/query-languages/esql/commands/processing-commands.md'
5151
anchors: {} # pass-through unlisted anchors in the `many` ruleset
@@ -98,3 +98,53 @@ redirects:
9898
anchors: {'query-rescorer'}
9999
- to: 'reference/elasticsearch/rest-apis/rescore-search-results.md'
100100
anchors: {'multiple-rescores'}
101+
102+
# Dummy redirects for deleted snippets to get round a bug in redirects validation
103+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
104+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
105+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
106+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
107+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
108+
'docs/reference/query-languages/esql/_snippets/functions/description/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
109+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
110+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
111+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
112+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
113+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
114+
'docs/reference/query-languages/esql/_snippets/functions/examples/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
115+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
116+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
117+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
118+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
119+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
120+
'docs/reference/query-languages/esql/_snippets/functions/layout/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
121+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
122+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
123+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
124+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
125+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
126+
'docs/reference/query-languages/esql/_snippets/functions/parameters/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
127+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
128+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
129+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
130+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
131+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
132+
'docs/reference/query-languages/esql/_snippets/functions/types/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
133+
'docs/reference/query-languages/esql/images/functions/st_geohash_to_string.svg': 'reference/query-languages/esql/esql-functions-operators.md'
134+
'docs/reference/query-languages/esql/images/functions/st_geotile_to_string.svg': 'reference/query-languages/esql/esql-functions-operators.md'
135+
'docs/reference/query-languages/esql/images/functions/st_geohex_to_string.svg': 'reference/query-languages/esql/esql-functions-operators.md'
136+
'docs/reference/query-languages/esql/images/functions/st_geohash_to_long.svg': 'reference/query-languages/esql/esql-functions-operators.md'
137+
'docs/reference/query-languages/esql/images/functions/st_geotile_to_long.svg': 'reference/query-languages/esql/esql-functions-operators.md'
138+
'docs/reference/query-languages/esql/images/functions/st_geohex_to_long.svg': 'reference/query-languages/esql/esql-functions-operators.md'
139+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geohash_to_string.json': 'reference/query-languages/esql/esql-functions-operators.md'
140+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geotile_to_string.json': 'reference/query-languages/esql/esql-functions-operators.md'
141+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geohex_to_string.json': 'reference/query-languages/esql/esql-functions-operators.md'
142+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geohash_to_long.json': 'reference/query-languages/esql/esql-functions-operators.md'
143+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geotile_to_long.json': 'reference/query-languages/esql/esql-functions-operators.md'
144+
'docs/reference/query-languages/esql/kibana/definition/functions/st_geohex_to_long.json': 'reference/query-languages/esql/esql-functions-operators.md'
145+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geohash_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
146+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geotile_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
147+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geohex_to_string.md': 'reference/query-languages/esql/esql-functions-operators.md'
148+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geohash_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
149+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geotile_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'
150+
'docs/reference/query-languages/esql/kibana/docs/functions/st_geohex_to_long.md': 'reference/query-languages/esql/esql-functions-operators.md'

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

Lines changed: 1 addition & 1 deletion
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/description/st_geohex.md

Lines changed: 1 addition & 1 deletion
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/description/st_geohex_to_string.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
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/description/st_geotile_to_long.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

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

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)