CrateDB
A distributed SQL database built on Lucene: every column is indexed and stored column by column, so one cluster answers aggregations, full-text, geo and vector queries over fresh machine data.
- What it is
- Real-time analytics databases,Search indexes
- Type
- Open source
- Made by
- Crate.io
- License
- Apache 2.0 (every feature since 4.5, March 2021); CrateDB Cloud is a paid managed service
- Facts checked
- 23 October 2026
What it is
CrateDB is a shared-nothing cluster written in Java. Each table is split into shards spread over the nodes, and each shard is a Lucene index made of immutable segments. Every column is indexed by default: text with a plain (whole-value) inverted index, or a full-text one if you give it an analyzer; numbers with BKD trees for range filters. Alongside the indexes it keeps doc values, Lucene’s column-by-column storage, which is on by default and serves sorting, grouping and aggregations without reading whole rows. A write is routed by its primary key (or CLUSTERED BY column) to a primary shard, logged in that shard’s translog, then applied on the replicas in parallel before the client gets an answer. New rows become visible to queries when the shard refreshes, once a second by default while the table is busy, or on REFRESH; lookups by primary key read the translog and see a write at once.
Clients speak SQL over the PostgreSQL wire protocol (port 5432) or an HTTP endpoint (port 4200, which also serves the Admin UI). Rows behave like JSON documents: OBJECT columns can add sub-columns on insert and are queried as payload['firmware']. MATCH runs BM25-ranked full-text search, geo types support shape queries, and FLOAT_VECTOR columns (up to 2,048 dimensions) answer KNN_MATCH nearest-neighbour searches through Lucene’s HNSW index. Tables can be partitioned by a generated column such as date_trunc('month', ts); each partition gets its own shards, filters on the partition column skip whole partitions, and a DELETE that covers a partition drops it. There are no transactions: each row write is atomic, BEGIN and COMMIT are accepted and ignored, and concurrent updates are handled with row version numbers.
All of CrateDB is Apache 2.0. Crate.io offers it as CrateDB OSS, CrateDB Enterprise (self-hosted with support) and CrateDB Cloud, a managed service on AWS, Azure, Google Cloud and STACKIT. Since October 2026 the company and CrateDB are owned by Crate.io AG, a holding company in Vaduz, Liechtenstein. Version 6.5.0 came out on 13 October 2026.
Why teams pick it
- Indexes everything by default and stores columns too, so ad-hoc filters and aggregations over billions of rows work without designing indexes first
- Search, analytics and documents in one SQL dialect: full-text with BM25 scores, geo shapes, vector kNN and nested
OBJECTcolumns sit next toGROUP BYand joins - Scales out on its own: shards are created (by default
max(4, data nodes × 2)), replicated and rebalanced automatically, and time-partitioned tables make old data cheap to drop - PostgreSQL wire protocol, so pgjdbc and tools such as Grafana’s PostgreSQL data source connect without a special driver
Watch out for
- No transactions: atomicity is per row,
BEGIN/COMMITare silently ignored, and the PostgreSQL interface reportsread uncommitted - Queries see new rows only after a refresh, up to a second later by default; only primary-key lookups are read-after-write
- Postgres-compatible on the wire, not in the dialect: no
JSONtype (useOBJECT), noTIMEwithout time zone, noCOPYsub-protocol, and full-text functions differ, so many Postgres tools only partly work - Upgrades can mean rebuilding: tables created before 5.x must be recreated to run on 6.x, and a new shard count only applies to partitions created afterwards
Good for
- Sub-second queries on fresh eventsEvery column is indexed and kept as doc values, so ad-hoc filters and aggregations work on rows a second after they arrive.
- High-cardinality time seriesTables partitioned by a generated time column skip whole partitions in queries and drop old ones with a single
DELETE. - Full-text search with relevance rankingEach shard is a Lucene index, and
MATCHruns analyzed, BM25-ranked full-text search in the same SQL as joins andGROUP BY.
- Data model
- Relational tables with nested
OBJECTcolumns that can add fields on insert - Query language
- SQL (its own dialect, not PostgreSQL’s)
- Client protocol
- PostgreSQL wire protocol and an HTTP endpoint
- Secondary indexes
- Every column indexed by default: inverted indexes, BKD trees, HNSW for vectors
- Transactions
- None; each row write is atomic, and
BEGIN/COMMITare ignored - Consistency
- Queries see new rows after a refresh (1 s by default); primary-key reads see them at once
- How it scales
- Shared-nothing; shards are created, replicated and rebalanced automatically
- Replication
- Primary shard with replicas, written in parallel before the client is answered
- Storage format
- Lucene segments per shard, with doc values as a column store
- Written in
- Java
- Ways to run it
- Self-hosted (OSS or Enterprise) or CrateDB Cloud on AWS, Azure, Google Cloud and STACKIT
Alternatives
What all real-time analytics databases have in common →Compare side by side →
Apache PinotOpen sourceAlso good for sub-second queries on fresh eventsA real-time distributed OLAP database from LinkedIn, built to answer analytics queries from end users in milliseconds at hundreds of thousands of queries per second, over data that arrived from Kafka seconds ago.
StarRocksOpen sourceAlso good for sub-second queries on fresh eventsAn open-source MPP analytical database with a vectorized engine that serves fast joins and real-time updates on its own tables, and also queries Iceberg, Hudi, Delta Lake and Hive tables in place.How it fits with other technologies
Sensor data: a monthly-partitioned table with a document column and a full-text index · sql
CREATE TABLE readings (
device_id TEXT,
ts TIMESTAMP WITH TIME ZONE,
temperature DOUBLE PRECISION,
payload OBJECT(DYNAMIC), -- new keys become columns on insert
note TEXT INDEX USING FULLTEXT WITH (analyzer = 'english'),
month TIMESTAMP WITH TIME ZONE GENERATED ALWAYS AS date_trunc('month', ts)
) PARTITIONED BY (month);
-- Aggregation over doc values, the column store
SELECT device_id, date_trunc('hour', ts) AS hour, avg(temperature)
FROM readings
WHERE ts >= CURRENT_TIMESTAMP - INTERVAL '1 day'
GROUP BY 1, 2 ORDER BY 2;
-- Full-text search on the same table, ranked by BM25
SELECT device_id, note, _score
FROM readings
WHERE MATCH(note, 'fan overheating')
ORDER BY _score DESC LIMIT 10;See it in a real stack
No architecture uses CrateDB yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2013–2026
CrateDB began in Dornbirn, Austria, where Christian Lutz, Bernd Dorn and Jodok Batlogg founded Crate in 2013 to build an open-source clustered database for fast text search and analytics; the first release came in April 2013. The founders had about ten years of history with Elasticsearch, including running some of Europe’s largest deployments. They started with their own Apache-licensed Elasticsearch plugins, such as inout and timefacets, which were merged into CrateDB, and built SQL on top of Elasticsearch’s clustering and Lucene’s indexes. Crate won TechCrunch Disrupt Europe in London in October 2014.
CrateDB 1.0 shipped in December 2016, after more than a million downloads, the same year the company moved its headquarters to San Francisco while development stayed in Austria. CrateDB 2.0 in May 2017 brought the first Enterprise Edition. With 4.0 in 2019 the team stopped tracking Elasticsearch directly and copied the code into its own repository, and the company adopted an open-core model that founder Christian Lutz later called a mistake. When Elastic moved Elasticsearch to the SSPL and Elastic License in January 2021, Crate.io said it would no longer use it as an upstream, and CrateDB 4.5 in March 2021 put every feature, including user management and privileges, under Apache 2.0; revenue was to come from support and CrateDB Cloud.
CrateDB 5.0 followed in July 2022 and 6.0 in July 2025. In October 2026 a newly formed holding company, Crate.io AG in Vaduz, Liechtenstein, took over the US company’s assets, including the Austrian subsidiary that holds the code, and Crate.io added STACKIT, a European cloud, as a CrateDB Cloud option.
Why it’s built this way
- SQL on Elasticsearch’s clustering and Lucene’s indexes
- The founders already ran large Elasticsearch clusters, and its Apache licence let them build on it freely; Bernd Dorn wrote that they would not have chosen it under the GPL. Lucene supplied the indexes underneath.
- Copy the Elasticsearch code in, then drop the upstream
- From 4.0 the team wanted control over the modules it used, so it copied the code and only backported fixes. Elastic’s 2021 licence change ended any reason to follow Elastic’s releases.
- Speak the PostgreSQL wire protocol
- Existing drivers and tools then work unchanged: pgjdbc connects, and Grafana reaches CrateDB through its ordinary PostgreSQL data source.
- One Apache 2.0 codebase instead of open core
- Christian Lutz wrote that over 85% of paying customers wanted a managed service anyway, that features such as authentication mattered to every user, and that a single codebase was simpler to develop and to partner on.
Timeline
- 2013
Crate is founded in Dornbirn, Austria; first release in April
- 2014
Crate wins TechCrunch Disrupt Europe in London
- 2016
CrateDB 1.0 ships in December; the company moves its headquarters to San Francisco
- 2017
CrateDB 2.0 brings the first Enterprise Edition
- 2019
CrateDB 4.0 copies Elasticsearch code into its own repository
- 2021
Crate.io drops Elasticsearch as upstream; CrateDB 4.5 makes everything Apache 2.0
- 2025
CrateDB 6.0 is released in July
- 2026
Crate.io AG in Liechtenstein takes over CrateDB; 6.5.0 ships in October
- Wikipedia: CrateDB (founders, Dornbirn, first release, TechCrunch Disrupt Europe, 1.0 and 2.0)
- CrateDB blog: Doubling down on permissive licensing and the Elasticsearch lockdown (Bernd Dorn, January 2021)
- Crate.io press release: CrateDB will switch to an Elasticsearch fork (February 2021)
- Crate.io: Open source licensing, a founder’s view (Christian Lutz, March 2021)
- DevClass: CrateDB goes fully open source with release of v4.5 (March 2021)
- Crate.io press release: Crate.io AG brings CrateDB back to Europe and partners with STACKIT (October 2026)
- Trending Topics: Crate.io moves back to Europe (October 2026)
- crate/crate releases on GitHub (5.0.0, 6.0.0, 6.5.0)
Sources15 · facts checked 23 October 2026
- CrateDB on GitHub: README (features, Docker quick start, Apache 2.0)
- CrateDB docs: Storage and consistency (shards, Lucene segments, translog, refresh, atomicity, versions)
- CrateDB guide: Indexing and storage (inverted indexes, BKD trees, doc values column store)
- CrateDB docs: CREATE TABLE (refresh interval, default shard count, replicas, column policy)
- CrateDB docs: Partitioned tables (generated partition columns, dropping partitions)
- CrateDB docs: Fulltext indices (plain index by default, analyzers)
- CrateDB docs: Data types (OBJECT column policies, FLOAT_VECTOR up to 2,048 dimensions)
- CrateDB guide: Full-text search (MATCH, analyzers, BM25, _score)
- CrateDB guide: Vector search (FLOAT_VECTOR, KNN_MATCH, HNSW from Lucene)
- CrateDB guide: Features (shared-nothing architecture inherited from Elasticsearch)
- CrateDB docs: PostgreSQL wire protocol (transactions ignored, type and dialect differences)
- CrateDB guide: Grafana (via the PostgreSQL data source)
- CrateDB: Database overview (editions: OSS, Enterprise, Cloud on STACKIT, AWS, Azure, GCP)
- CrateDB docs: Release notes 6.5.0 (13 October 2026; upgrade requirements)
- Crate.io press release: Crate.io AG brings CrateDB back to Europe and partners with STACKIT (October 2026)