Type to search.

ES|QL ST_DIFFERENCE function

Serverless Preview

Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud.

Availability

  • Preview

    This functionality is in technical preview and is ready for evaluation. Use with caution in production; it is not recommended for mission-critical workloads. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. Specific Support terms apply.

Serverless interfaces and procedures might differ from classic Elastic Stack deployments.

Stack Preview 9.5+

The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats.

Availability

  • Preview since 9.5

    This functionality is in technical preview and is ready for evaluation. Use with caution in production; it is not recommended for mission-critical workloads. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. Specific Support terms apply.

Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

Returns the part of geomA that does not intersect with geomB.

Embedded
Embedded
geomA
Expression of type geo_point, geo_shape, cartesian_point or cartesian_shape. If null, the function returns null.
geomB

Expression of type geo_point, geo_shape, cartesian_point or cartesian_shape. Must share the same coordinate reference system as the first parameter. If null, the function returns null.

Returns the part of geomA that does not intersect with geomB. This is equivalent to subtracting geomB from geomA. Both geometries must share the same coordinate reference system.

geomA geomB result
cartesian_point cartesian_point cartesian_shape
cartesian_point cartesian_shape cartesian_shape
cartesian_shape cartesian_point cartesian_shape
cartesian_shape cartesian_shape cartesian_shape
geo_point geo_point geo_shape
geo_point geo_shape geo_shape
geo_shape geo_point geo_shape
geo_shape geo_shape geo_shape
ES|QL
ROW a = TO_GEOSHAPE("POLYGON ((0 0, 3 0, 3 3, 0 3, 0 0))"),
    b = TO_GEOSHAPE("POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))")
| EVAL diff = ST_DIFFERENCE(a, b)
| KEEP diff
diff:geo_shape
POLYGON ((3.0 1.0, 3.0 0.0, 0.0 0.0, 0.0 3.0, 1.0 3.0, 1.0 1.0, 3.0 1.0))

Difference of two overlapping polygons

The difference is the part of the first polygon that does not overlap with the second.

Difference of two overlapping polygons
Difference of two overlapping polygons