Usa un motor de búsqueda dedicado — Elasticsearch/OpenSearch construido sobre un índice invertido — alimentado desde tu DB de origen vía CDC, y fragmenta el índice para escalar. Tu base de datos primaria (Postgres/MySQL) no puede hacer búsqueda de texto rankeada por relevancia sobre cientos de millones de filas; un LIKE '%term%' escanea cada fila. Un motor de búsqueda invierte el problema.
Source DB ─▶ CDC (Debezium) ─▶ Kafka ─▶ Indexer ─▶ Elasticsearch/OpenSearch
(Postgres) (change stream) ├─ Shard 0 (inverted index) + replicas
├─ Shard 1
Query ─▶ Coordinator ─▶ scatter to shards ─▶ gather ─┴─ Shard N ── ranked by BM25
