The Death of the 'Split-Brain' Architecture
For a decade, the architectural blueprint for search was set in stone: you store your source of truth in a relational database like Postgres and ship your searchable data to Elasticsearch or OpenSearch. We accepted this 'split-brain' complexity as a necessary evil. We built brittle Change Data Capture (CDC) pipelines, wrestled with mapping mismatches, and tolerated the 'refresh interval' lag where data committed to the DB wouldn't show up in search results for several seconds. We did it because we had to.
But the ground has shifted. With the explosion of Generative AI and the rise of PostgreSQL vector search, the justification for maintaining a separate search cluster is evaporating. Between the massive performance leaps in pg_vector and the integration of the Rust-based Tantivy engine via ParadeDB, Postgres is no longer just a database—it is a world-class search engine.
The Sync Tax: Why Your Infrastructure is Bleeding
Every time you move data from Postgres to an external search engine, you pay a 'sync tax.' This isn't just about the AWS bill for your Elasticsearch nodes; it’s about the cognitive load on your engineering team. When you have two systems, you have two security models, two backup strategies, and a permanent risk of data inconsistency. If a sync worker crashes, your search results become stale, and suddenly your customer support queue is overflowing.
By unifying your stack, you eliminate the middleman. When you use PostgreSQL vector search alongside your relational data, a single COMMIT makes your data immediately available for semantic search, keyword search, and relational filtering. There is no lag. There is no ETL pipeline to babysit. It just works.
Performance Reality Check: Is Postgres Actually Fast Enough?
The biggest argument against Postgres search used to be performance. 'It doesn't scale,' the critics said. That argument died with pg_vector 0.7.0. According to AWS benchmarks, recent optimizations like scalar and binary quantization have reduced HNSW index memory consumption by 50% while speeding up index builds by up to 67x.
But what about raw query speed? In head-to-head comparisons, pg_vector performance is now 'absurdly competitive.' Independent benchmarks from Hugging Face show Postgres handling 1,212 Queries Per Second (QPS) on medium-scale datasets, actually outperforming Elasticsearch's 983 QPS in similar scenarios. When you factor in the ability to use 16-bit halfvec support, you’re looking at a system that handles hundreds of millions of vectors without breaking a sweat or requiring a dedicated vector-only database.
ParadeDB and the BM25 Breakthrough
Vector search is great for 'vibe-based' queries, but sometimes you just need traditional keyword matching. This is where ParadeDB vs Elasticsearch becomes a fascinating debate. ParadeDB isn't a hack; it integrates Tantivy—a high-performance, Rust-based alternative to Lucene—directly into the Postgres engine. This gives you BM25 search in Postgres with the same relevance scoring you'd expect from Elasticsearch, but accessible via standard SQL.
The Secret Weapon: Unified Security and Governance
If you've ever tried to implement fine-grained access control in Elasticsearch that mirrors your application's database permissions, you know the pain. You end up duplicating your logic in two places. With a unified Postgres approach, you leverage Row-Level Security (RLS). If a user shouldn't see a document in the orders table, they won't find it in the search results either. The security policy is defined once, at the data layer, and it applies to relational, full-text, and vector queries simultaneously.
Navigating the Nuances: When to Stay with Elasticsearch
I won't lie to you and say Postgres is the perfect tool for every single use case. If you are a logging giant like Datadog or Splunk, ingesting petabytes of logs per day, Elasticsearch’s distributed architecture still holds the edge. Postgres can struggle with 'TOAST' overhead if your text payloads are massive (over 2kB), leading to increased I/O latency as the database moves data to secondary storage.
Furthermore, running heavy search workloads on your primary transactional instance can lead to resource contention. However, most modern teams solve this by using read replicas dedicated to search, which is still significantly cheaper and simpler than managing a separate Elasticsearch cluster.
The Verdict: Simplify Your Stack
The 'Postgres for Everything' movement isn't just about minimalism; it's about maturity. We now have the tools to perform hybrid search—combining keyword and semantic results—using a single SQL query. No more complex client-side rank fusion. No more syncing. Just one robust, ACID-compliant engine that happens to be faster than the specialized tools we used to rely on.
If you are starting a new project or looking to pay down technical debt, look at your Elasticsearch cluster and ask: 'Do I really need this?' For 95% of applications, the answer in 2025 is a resounding no. Embrace PostgreSQL vector search, install ParadeDB, and enjoy the peace of mind that comes with a single source of truth.
Ready to try it? Start by experimenting with pg_vector on your local instance or a managed provider like Neon or Tembo, and see how much faster your development cycle becomes when your search engine speaks SQL.


