GrowlerDB
Open-source text search engine over Apache Iceberg. Iceberg stays the system of record; GrowlerDB keeps a fast derived full-text index and returns the matching primary keys, which hydrate back to authoritative rows in the lake.
The model in one minute
- You define an index over an Iceberg source table — which columns to index, the composite
key, and an optional
tenant_field. A connector keeps the index in sync with the table. - A search runs against the derived index and returns document coordinates (the composite key) + scores — not documents.
- Your client (or built-in hydration) then fetches the authoritative rows from Iceberg by key
(
POST /v1/keys:get), governed by the catalog. The lake stays the source of truth.
This is the inverse of a search engine that owns its documents — and it’s why GrowlerDB layers onto a lakehouse instead of duplicating it.
Documentation
| Page | What it covers |
|---|---|
| Getting started | Compose stack → your first search → hydrate → console. |
| Install & run modes | Build from source; embedded, serve, gateway, control-plane. |
| Configuration | CLI flags, env vars, and the index-definition YAML (fields, key, tenant). |
| Reference | Query language, the REST/gRPC API, and the OpenSearch _search adapter. |
| Migrating from Elasticsearch / OpenSearch | Concepts + the two integration paths. |
| Deployment | Local Compose and Kubernetes (Helm). |
| Storage & tiering | Hot vs cold object-storage tiering — when to use it (and when to keep hot). |
| GA criteria | What’s GA-ready vs. the road to 1.0. |
Feature overview
- Search over Iceberg with PK hydration (
/v1/search→/v1/keys:get). - Query language — native structured AST + a Lucene/KQL string parser.
- Distributed — control plane + stateful searcher nodes + a scatter-gather gateway.
- Secure & multi-tenant — OIDC/JWT, API keys, mTLS; control-plane RBAC; non-widenable tenant scoping.
- Observable — OpenTelemetry traces/metrics/logs, Prometheus, bundled Grafana SLI dashboards.
- Console UI + an optional OpenSearch
_searchadapter.