Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SQL: Add initial geo support - 7.x #42135

Merged
merged 1 commit into from
May 14, 2019
Merged

SQL: Add initial geo support - 7.x #42135

merged 1 commit into from
May 14, 2019

Conversation

imotov
Copy link
Contributor

@imotov imotov commented May 14, 2019

Adds an initial limited implementations of geo features to SQL. This implementation is based on the OpenGIS® Implementation Standard for Geographic information - Simple feature access, which is the current standard for GIS system implementation. This effort is concentrate on SQL option AKA ISO 19125-2.

Queries that are supported as a result of this initial implementation

Metadata commands

  • DESCRIBE table - returns the correct column types GEOMETRY for geo shapes and geo points.
  • SHOW FUNCTIONS - returns a list that includes supported ST_ functions
  • SYS TYPES and SYS COLUMNS display correct types GEO_SHAPE and GEO_POINT for geo shapes and geo points accordingly.

Returning geoshapes and geopoints from elasticsearch

  • SELECT geom FROM table - returns the geoshapes and geo_points as libs/geo objects in JDBC or as WKT strings in console.
  • SELECT ST_AsWKT(geom) FROM table; and SELECT ST_AsText(geom) FROM table;- returns the geoshapes ang geopoints in their WKT representation;

Using geopoints to elasticsearch

  • The following functions will be supported for geopoints in queries, sorting and aggregations: ST_GeomFromText, ST_X, ST_Y, ST_Z, ST_GeometryType, and ST_Distance. In most cases when used in queries, sorting and aggregations, these function are translated into script. These functions can be used in the SELECT clause for both geopoints and geoshapes.
  • SELECT * FROM table WHERE ST_Distance(ST_GeomFromText(POINT(1 2), point) < 10; - returns all records for which point is located within 10m from the POINT(1 2). In this case the WHERE clause is translated into a range query.

Limitations:

Geoshapes cannot be used in queries, sorting and aggregations as part of this initial effort. In order to fully take advantage of geoshapes we would need to have access to geoshape doc values, which is coming in #37206. ST_Z cannot be used on geopoints in queries, sorting and aggregations since we don't store altitude in geo_point doc values.

Relates to #29872
Backport of #42031

Adds an initial limited implementations of geo features to SQL. This implementation is based on the [OpenGIS® Implementation Standard for Geographic information - Simple feature access](http://www.opengeospatial.org/standards/sfs), which is the current standard for GIS system implementation. This effort is concentrate on SQL option AKA ISO 19125-2.

- `DESCRIBE table`  - returns the correct column types `GEOMETRY` for geo shapes and geo points.
- `SHOW FUNCTIONS` - returns a list that includes supported `ST_` functions
- `SYS TYPES` and `SYS COLUMNS` display correct types `GEO_SHAPE` and `GEO_POINT` for geo shapes and geo points accordingly.

- `SELECT geom FROM table` - returns the geoshapes and geo_points as libs/geo objects in JDBC or as WKT strings in console.
- `SELECT ST_AsWKT(geom) FROM table;` and `SELECT ST_AsText(geom) FROM table;`- returns the geoshapes ang geopoints in their WKT representation;

- The following functions will be supported for geopoints in queries, sorting and aggregations: `ST_GeomFromText`, `ST_X`, `ST_Y`, `ST_Z`, `ST_GeometryType`, and `ST_Distance`. In most cases when used in queries, sorting and aggregations, these function are translated into script. These functions can be used in the SELECT clause for both geopoints and geoshapes.
- `SELECT * FROM table WHERE ST_Distance(ST_GeomFromText(POINT(1 2), point) < 10;` - returns all records for which `point` is located within 10m from the `POINT(1 2)`. In this case the WHERE clause is translated into a range query.

Geoshapes cannot be used in queries, sorting and aggregations as part of this initial effort. In order to fully take advantage of geoshapes we would need to have access to geoshape doc values, which is coming in elastic#37206. `ST_Z` cannot be used on geopoints in queries, sorting and aggregations since we don't store altitude in geo_point doc values.

Relates to elastic#29872
@imotov imotov added >feature :Analytics/Geo Indexing, search aggregations of geo points and shapes :Analytics/SQL SQL querying backport v7.2.0 labels May 14, 2019
@imotov imotov requested a review from costin May 14, 2019 08:58
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-analytics-geo

@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-search

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Analytics/Geo Indexing, search aggregations of geo points and shapes :Analytics/SQL SQL querying backport >feature v7.2.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants