# Indexing

Pinot index design is workload design. The right choice depends on whether you are optimizing point lookups, range filters, text search, JSON predicates, geospatial queries, grouping-heavy rollups, or vector similarity search.

This section helps you do three things:

1. Match a query pattern to the right index.
2. Decide whether the index belongs in the table config or can be added later.
3. Validate the choice with the query patterns you actually run.

## Start here

Use the decision guide when you know the query shape but not the best index yet.

{% content-ref url="indexing/choosing-indexes" %}
[choosing-indexes](https://docs.pinot.apache.org/build-with-pinot/indexing/choosing-indexes)
{% endcontent-ref %}

## Common index families

* [Bloom filter](https://docs.pinot.apache.org/build-with-pinot/indexing/bloom-filter) for segment pruning on highly selective lookups.
* [Forward index](https://docs.pinot.apache.org/build-with-pinot/indexing/forward-index) for Pinot's default row-to-value storage path.
* [FST index](https://docs.pinot.apache.org/build-with-pinot/indexing/fst-index) for prefix and pattern-style string filtering.
* [Inverted index](https://docs.pinot.apache.org/build-with-pinot/indexing/inverted-index) for equality, `IN`, and other highly selective filters.
* [Timestamp index](https://docs.pinot.apache.org/build-with-pinot/indexing/timestamp-index) for time-granularity queries and rollups.
* [Range index](https://docs.pinot.apache.org/build-with-pinot/indexing/range-index) for bounded numeric or time filters.
* [Text search support](https://docs.pinot.apache.org/build-with-pinot/indexing/text-search-support) for tokenized search and text predicates.
* [JSON index](https://docs.pinot.apache.org/build-with-pinot/indexing/json-index) for nested JSON predicates.
* [Geospatial support](https://docs.pinot.apache.org/build-with-pinot/indexing/geospatial-support) for distance and spatial filtering.
* [Star-tree index](https://docs.pinot.apache.org/build-with-pinot/indexing/star-tree-index) for repeatable aggregation and group-by workloads.
* [Vector index](https://docs.pinot.apache.org/build-with-pinot/indexing/vector-index) for similarity search on embeddings.

## How Pinot applies indexes

Most index choices are defined in the table config, usually under `fieldConfigList` or `tableIndexConfig`, depending on the index and the configuration style you are using. The canonical table-level reference is [Table](https://docs.pinot.apache.org/reference/configuration-reference/table).

For a practical walkthrough, see [Configure indexes](https://docs.pinot.apache.org/build-with-pinot/ingestion/stream-ingestion/configure-indexes).

Indexes can also be added or removed after ingestion for some workloads. When you need to change an existing table, prefer the current field-level configuration style over legacy index settings.

## Query patterns to keep in mind

Indexes should reflect the actual queries you run:

* `WHERE col = value` and `WHERE col IN (...)` usually want an inverted index.
* `WHERE col BETWEEN ...` or `WHERE col > ...` usually want a range-oriented strategy.
* `TEXT_MATCH(...)` wants a text index.
* `JSON_MATCH(...)` wants a JSON index.
* `ST_Distance(...)` or other spatial predicates want geospatial support.
* `GROUP BY` on a stable dimension set often benefits from star-tree.
* `VECTOR_SIMILARITY(...)` wants vector indexing.

If you are still deciding between query engines or function support, use the [Querying Pinot](https://docs.pinot.apache.org/build-with-pinot/querying-and-sql/querying-pinot) and [SSE vs MSE](https://docs.pinot.apache.org/build-with-pinot/querying-and-sql/sse-vs-mse) pages to confirm the query model first.

## What this page covered

This page introduced the indexing section, the main index families, and the basic rule for choosing an index from the query pattern.

## Next step

Read the decision guide to map your query pattern to a specific index and config style.

## Related pages

* [Choosing indexes](https://docs.pinot.apache.org/build-with-pinot/indexing/choosing-indexes)
* [Table](https://docs.pinot.apache.org/reference/configuration-reference/table)
* [Configure indexes](https://docs.pinot.apache.org/build-with-pinot/ingestion/stream-ingestion/configure-indexes)
