Skip to main content
This feature is available starting in StarTree release 0.14.0. It must be enabled on demand — contact your StarTree representative to have it activated for your environment.
External tables support a broad set of Pinot indexes out of the box. Indexes are key to getting low-latency query performance from external tables. Without them, every query performs a full segment scan across data read from object storage. With the right indexes configured for your query patterns, Pinot can skip irrelevant segments and data blocks entirely, reducing query time from minutes/seconds to seconds/milliseconds on large datasets, while also cutting S3 I/O costs. The most impactful indexes to configure based on your workload:
  • JSON index — required for filtering or extracting nested fields from complex columns (STRUCT, LIST, MAP).
  • Text index — enables full-text search on free-text string columns.
  • Range index — speeds up range predicates on numeric or timestamp columns (e.g., WHERE ts > X AND ts < Y).
  • Inverted index — efficient equality filtering on low-cardinality columns (e.g., WHERE status = 'active').

Supported

IndexNotes
InvertedSupported on columns using RAW encoding.
RangeSupported for numeric columns.
SparseSupported.
JSON / Composite JSONSupported. Required for JSON_MATCH and JSON_EXTRACT_SCALAR queries on complex columns (STRUCT, LIST, MAP).
TextSupported. Enables full-text search on string columns.
Null Value VectorSupported. Used internally when nullHandlingEnabled: true is set on the table.
Remote Forward IndexSupported.
StarTreeSoon to be supported.
Bloom FilterSoon to be supported.

Not Supported

IndexReason
SortedRequires dictionary encoding, which is not available for external table columns.
FSTRequires dictionary encoding, which is not available for external table columns.
IFSTRequires dictionary encoding, which is not available for external table columns.
Data in Pinot external tables is stored as Parquet files on remote cloud storage (e.g., S3, GCS) and is read directly at query time. Unlike standard Pinot tables, the data is never converted into Pinot’s native segment format.Pinot’s Dictionary index works by building a lookup table that maps each unique column value to a compact integer ID, and then storing those IDs in the forward index instead of the raw values. This process requires the data to be materialized in Pinot’s internal segment format during ingestion.Because external tables bypass this ingestion step and read directly from Parquet files, there is no opportunity to build or maintain a Pinot Dictionary index. As a result, Dictionary encoding and any indexes that depend on it — including Sorted Index, FST Index, and IFST Index — are not supported for external tables.Indexes that operate on raw values, such as Range Index, Bloom Filter, and Text Index, are not affected by this limitation.