Class SearchMvtRequest
- All Implemented Interfaces:
- JsonpSerializable
Search a vector tile for geospatial values. Before using this API, you should be familiar with the Mapbox vector tile specification. The API returns results as a binary mapbox vector tile.
Internally, Elasticsearch translates a vector tile search API request into a search containing:
- A geo_bounding_boxquery on the<field>. The query uses the<zoom>/<x>/<y>tile as a bounding box.
- A geotile_gridorgeohex_gridaggregation on the<field>. Thegrid_aggparameter determines the aggregation type. The aggregation uses the<zoom>/<x>/<y>tile as a bounding box.
- Optionally, a geo_boundsaggregation on the<field>. The search only includes this aggregation if theexact_boundsparameter istrue.
- If the optional parameter with_labelsistrue, the internal search will include a dynamic runtime field that calls thegetLabelPositionfunction of the geometry doc value. This enables the generation of new point features containing suggested geometry labels, so that, for example, multi-polygons will have only one label.
The API returns results as a binary Mapbox vector tile. Mapbox vector tiles are encoded as Google Protobufs (PBF). By default, the tile contains three layers:
- A hitslayer containing a feature for each<field>value matching thegeo_bounding_boxquery.
- An aggslayer containing a feature for each cell of thegeotile_gridorgeohex_grid. The layer only contains features for cells with matching data.
- A meta layer containing:
 - A feature containing a bounding box. By default, this is the bounding box of the tile.
- Value ranges for any sub-aggregations on the geotile_gridorgeohex_grid.
- Metadata for the search.
 
The API only returns features that can display at its zoom level. For example, if a polygon feature has no area at its zoom level, the API omits it. The API returns errors as UTF-8 encoded JSON.
IMPORTANT: You can specify several options for this API as either a query parameter or request body parameter. If you specify both parameters, the query parameter takes precedence.
Grid precision for geotile
 For a grid_agg of geotile, you can use cells in the
 aggs layer as tiles for lower zoom levels.
 grid_precision represents the additional zoom levels available
 through these cells. The final precision is computed by as follows:
 <zoom> + grid_precision. For example, if
 <zoom> is 7 and grid_precision is 8, then the
 geotile_grid aggregation will use a precision of 15. The maximum
 final precision is 29. The grid_precision also determines the
 number of cells for the grid as follows:
 (2^grid_precision) x (2^grid_precision). For example, a value of
 8 divides the tile into a grid of 256 x 256 cells. The aggs
 layer only contains features for cells with matching data.
 
Grid precision for geohex
 For a grid_agg of geohex, Elasticsearch uses
 <zoom> and grid_precision to calculate a
 final precision as follows: <zoom> + grid_precision.
 
 This precision determines the H3 resolution of the hexagonal cells produced
 by the geohex aggregation. The following table maps the H3
 resolution for each precision. For example, if <zoom> is 3
 and grid_precision is 3, the precision is 6. At a precision of
 6, hexagonal cells have an H3 resolution of 2. If <zoom>
 is 3 and grid_precision is 4, the precision is 7. At a precision
 of 7, hexagonal cells have an H3 resolution of 3.
 
| Precision | Unique tile bins | H3 resolution | Unique hex bins | Ratio | 
|---|---|---|---|---|
| 1 | 4 | 0 | 122 | 30.5 | 
| 2 | 16 | 0 | 122 | 7.625 | 
| 3 | 64 | 1 | 842 | 13.15625 | 
| 4 | 256 | 1 | 842 | 3.2890625 | 
| 5 | 1024 | 2 | 5882 | 5.744140625 | 
| 6 | 4096 | 2 | 5882 | 1.436035156 | 
| 7 | 16384 | 3 | 41162 | 2.512329102 | 
| 8 | 65536 | 3 | 41162 | 0.6280822754 | 
| 9 | 262144 | 4 | 288122 | 1.099098206 | 
| 10 | 1048576 | 4 | 288122 | 0.2747745514 | 
| 11 | 4194304 | 5 | 2016842 | 0.4808526039 | 
| 12 | 16777216 | 6 | 14117882 | 0.8414913416 | 
| 13 | 67108864 | 6 | 14117882 | 0.2103728354 | 
| 14 | 268435456 | 7 | 98825162 | 0.3681524172 | 
| 15 | 1073741824 | 8 | 691776122 | 0.644266719 | 
| 16 | 4294967296 | 8 | 691776122 | 0.1610666797 | 
| 17 | 17179869184 | 9 | 4842432842 | 0.2818666889 | 
| 18 | 68719476736 | 10 | 33897029882 | 0.4932667053 | 
| 19 | 274877906944 | 11 | 237279209162 | 0.8632167343 | 
| 20 | 1099511627776 | 11 | 237279209162 | 0.2158041836 | 
| 21 | 4398046511104 | 12 | 1660954464122 | 0.3776573213 | 
| 22 | 17592186044416 | 13 | 11626681248842 | 0.6609003122 | 
| 23 | 70368744177664 | 13 | 11626681248842 | 0.165225078 | 
| 24 | 281474976710656 | 14 | 81386768741882 | 0.2891438866 | 
| 25 | 1125899906842620 | 15 | 569707381193162 | 0.5060018015 | 
| 26 | 4503599627370500 | 15 | 569707381193162 | 0.1265004504 | 
| 27 | 18014398509482000 | 15 | 569707381193162 | 0.03162511259 | 
| 28 | 72057594037927900 | 15 | 569707381193162 | 0.007906278149 | 
| 29 | 288230376151712000 | 15 | 569707381193162 | 0.001976569537 | 
Hexagonal cells don't align perfectly on a vector tile. Some cells may intersect more than one vector tile. To compute the H3 resolution for each precision, Elasticsearch compares the average density of hexagonal bins at each resolution with the average density of tile bins at each zoom level. Elasticsearch uses the H3 resolution that is closest to the corresponding geotile density.
Learn how to use the vector tile search API with practical examples in the Vector tile search examples guide.
- See Also:
- 
Nested Class SummaryNested ClassesNested classes/interfaces inherited from class co.elastic.clients.elasticsearch._types.RequestBaseRequestBase.AbstractBuilder<BuilderT extends RequestBase.AbstractBuilder<BuilderT>>
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final JsonpDeserializer<SearchMvtRequest>Json deserializer forSearchMvtRequeststatic final Endpoint<SearchMvtRequest,BinaryResponse, ErrorResponse> Endpoint "search_mvt".
- 
Method SummaryModifier and TypeMethodDescriptionfinal Map<String,Aggregation> aggs()Sub-aggregations for the geotile_grid.final Integerbuffer()The size, in pixels, of a clipping buffer outside the tile.final BooleanIffalse, the meta layer's feature is the bounding box of the tile.final Integerextent()The size, in pixels, of a side of the tile.final Stringfield()Required - Field containing geospatial data to returnfields()The fields to return in thehitslayer.final GridAggregationTypegridAgg()The aggregation used to create a grid for thefield.final IntegerAdditional zoom levels available through the aggs layer.final GridTypegridType()Determines the geometry type for features in the aggs layer.index()Required - Comma-separated list of data streams, indices, or aliases to searchstatic SearchMvtRequestfinal StringSpecifies a subset of projects to target for the search using project metadata tags in a subset of Lucene query syntax.final Queryquery()The query DSL used to filter documents for the search.final Map<String,RuntimeField> Defines one or more runtime fields in the search request.voidserialize(jakarta.json.stream.JsonGenerator generator, JsonpMapper mapper) Serialize this object to JSON.protected voidserializeInternal(jakarta.json.stream.JsonGenerator generator, JsonpMapper mapper) protected static voidfinal Integersize()The maximum number of features to return in the hits layer.final List<SortOptions>sort()Sort the features in the hits layer.final TrackHitsThe number of hits matching the query to count accurately.final BooleanIftrue, the hits and aggs layers will contain additional point features representing suggested label positions for the original features.final intx()Required - X coordinate for the vector tile to searchfinal inty()Required - Y coordinate for the vector tile to searchfinal intzoom()Required - Zoom level for the vector tile to searchMethods inherited from class co.elastic.clients.elasticsearch._types.RequestBasetoString
- 
Field Details- 
_DESERIALIZERJson deserializer forSearchMvtRequest
- 
_ENDPOINTEndpoint "search_mvt".
 
- 
- 
Method Details- 
ofpublic static SearchMvtRequest of(Function<SearchMvtRequest.Builder, ObjectBuilder<SearchMvtRequest>> fn) 
- 
aggsSub-aggregations for the geotile_grid.It supports the following aggregation types: - avg
- boxplot
- cardinality
- extended stats
- max
- median absolute deviation
- min
- percentile
- percentile-rank
- stats
- sum
- value count
 The aggregation names can't start with _mvt_. The_mvt_prefix is reserved for internal aggregations.API name: aggs
- 
bufferThe size, in pixels, of a clipping buffer outside the tile. This allows renderers to avoid outline artifacts from geometries that extend past the extent of the tile.API name: buffer
- 
exactBoundsIffalse, the meta layer's feature is the bounding box of the tile. Iftrue, the meta layer's feature is a bounding box resulting from ageo_boundsaggregation. The aggregation runs on <field> values that intersect the<zoom>/<x>/<y>tile withwrap_longitudeset tofalse. The resulting bounding box may be larger than the vector tile.API name: exact_bounds
- 
extentThe size, in pixels, of a side of the tile. Vector tiles are square with equal sides.API name: extent
- 
fieldRequired - Field containing geospatial data to returnAPI name: field
- 
fieldsThe fields to return in thehitslayer. It supports wildcards (*). This parameter does not support fields with array values. Fields with array values may return inconsistent results.API name: fields
- 
gridAggThe aggregation used to create a grid for thefield.API name: grid_agg
- 
gridPrecisionAdditional zoom levels available through the aggs layer. For example, if<zoom>is7andgrid_precisionis8, you can zoom in up to level 15. Accepts 0-8. If 0, results don't include the aggs layer.API name: grid_precision
- 
gridTypeDetermines the geometry type for features in the aggs layer. In the aggs layer, each feature represents ageotile_gridcell. Ifgrid, each feature is a polygon of the cells bounding box. Ifpoint`, each feature is a Point that is the centroid of the cell.API name: grid_type
- 
indexRequired - Comma-separated list of data streams, indices, or aliases to searchAPI name: index
- 
projectRoutingSpecifies a subset of projects to target for the search using project metadata tags in a subset of Lucene query syntax. Allowed Lucene queries: the _alias tag and a single value (possibly wildcarded). Examples: _alias:my-project _alias:_origin _alias:pr Supported in serverless only.API name: project_routing
- 
queryThe query DSL used to filter documents for the search.API name: query
- 
runtimeMappingsDefines one or more runtime fields in the search request. These fields take precedence over mapped fields with the same name.API name: runtime_mappings
- 
sizeThe maximum number of features to return in the hits layer. Accepts 0-10000. If 0, results don't include the hits layer.API name: size
- 
sortSort the features in the hits layer. By default, the API calculates a bounding box for each feature. It sorts features based on this box's diagonal length, from longest to shortest.API name: sort
- 
trackTotalHitsThe number of hits matching the query to count accurately. Iftrue, the exact number of hits is returned at the cost of some performance. Iffalse, the response does not include the total number of hits matching the query.API name: track_total_hits
- 
withLabelsIftrue, the hits and aggs layers will contain additional point features representing suggested label positions for the original features.- Pointand- MultiPointfeatures will have one of the points selected.
- Polygonand- MultiPolygonfeatures will have a single point generated, either the centroid, if it is within the polygon, or another point within the polygon selected from the sorted triangle-tree.
- LineStringfeatures will likewise provide a roughly central point selected from the triangle-tree.
- The aggregation results will provide one central point for each aggregation bucket.
 All attributes from the original features will also be copied to the new label features. In addition, the new features will be distinguishable using the tag _mvt_label_position.API name: with_labels
- 
xpublic final int x()Required - X coordinate for the vector tile to searchAPI name: x
- 
ypublic final int y()Required - Y coordinate for the vector tile to searchAPI name: y
- 
zoompublic final int zoom()Required - Zoom level for the vector tile to searchAPI name: zoom
- 
serializeSerialize this object to JSON.- Specified by:
- serializein interface- JsonpSerializable
 
- 
serializeInternal
- 
setupSearchMvtRequestDeserializerprotected static void setupSearchMvtRequestDeserializer(ObjectDeserializer<SearchMvtRequest.Builder> op) 
 
-