All Products
Search
Document Center

Lindorm:Create an index table

Last Updated:Mar 28, 2026

GanosBase includes built-in spatial indexes for Lindorm. When you insert spatio-temporal data, you specify which indexes to create — no manual key-value pair design for HBase tables required. Define the index table schema before inserting any data.

GanosBase supports five types of indexes. By default, all five types of indexes are created, which delivers optimal query performance across all scenarios but uses more storage. To reduce storage usage, create only the index types that match your query patterns.

Index types

Use the following table to match your geometry types and query patterns to the appropriate indexes.

IndexGeometryQuery type
IDAnyFeature ID (FID) lookup; FID must be unique
Z2Point objectsSpatial queries (geo-fence, range)
XZ2Line objects, polygonsSpatial queries (geo-fence, range)
Z3Point objectsSpatio-temporal queries (historical trajectory in a spatial range and time period)
XZ3Line objects, polygonsSpatio-temporal queries
XZ2TLine objects, polygonsSpatio-temporal queries; more effective for trajectory line model queries
XYZPoint objects onlyThree-dimensional queries (longitude, latitude, elevation)
AttributeN/AQueries on other attribute columns

How it works

Creating an index table involves two steps:

  1. Specify a SimpleFeatureType that defines the spatial or spatio-temporal data type:

    • Set the schema name. A schema corresponds to an index table.

    • Define the schema columns: attribute, geometry, and date columns.

    • (Optional) Set additional parameters: compression method, Tiny Well-Known Binary (TWKB) format, and index-specific parameters.

  2. Create objects based on the specified SimpleFeatureType.

Create specific indexes

By default, GanosBase creates all five types of indexes. To create only specific indexes, set geomesa.indices.enabled on the SimpleFeatureType before calling createSchema:

// sft is an instance of SimpleFeatureType.
sft.getUserData().put("geomesa.indices.enabled", "{index_name}:{col1}:{col2}:...,{index_name}:{col}");

Parameter reference:

ParameterDescription
index_nameIndex type. Valid values: id, attr, z2, z3, xz2, xz3, xyz
colColumn name defined in the SimpleFeatureType
  • Separate multiple indexes with commas (,).

  • Separate an index name and its columns with colons (:).

Example: Create Z3 and attribute indexes only.

The Z3 index covers the start+dtg column pair and the end+dtg column pair. The attribute index covers name+dtg.

sft.getUserData().put("geomesa.indices.enabled", "z3:start:dtg,z3:end:dtg,attr:name:dtg");

Spatio-temporal secondary index

GanosBase builds spatio-temporal secondary indexes on top of the native secondary indexes supported by Lindorm. A secondary index on a serialized spatio-temporal column is ineffective.

To make a secondary index work, add an encoded spatio-temporal column to the primary table first. This column stores the space-filling curve encoded values of the spatio-temporal attributes. The secondary index is then built on this encoded column.

By default, no redundant columns exist in the secondary index table. Redundant columns will be supported in future versions.

image

Limitations

  • Do not create an index table while historical data synchronization is in progress.