Imagine you're building a search feature for your product catalog. You have 10 million products, and you need to return relevant results in under 100 milliseconds. You decide to use PostgreSQL's full-text search, so you write:
SELECT * FROM products WHERE to_tsvector ( 'english' , title ) @@ plainto_tsquery ( 'english' , 'wireless headphones' );
It works. But then you get 100 million products. Then a billion. The queries crawl from 100ms to 5 seconds. Your users leave. Your boss asks why.
The answer isn't "use a bigger database." The answer is "use a different data structure."
Elasticsearch doesn't store data the way PostgreSQL does. It uses something called an inverted index , and that one difference is why Elasticsearch can search a billion documents in 2-5 milliseconds while traditional databases take seconds.
This post dives into how that magic works.
What Is an Inverted Index?
Think of a book. At the back, there's an index:
Elasticsearch ... pages 45, 78, 120, 156 Performance ...…