Búsqueda de texto completo en Postgres: prescinde de Elasticsearch en la mayoría de los casos

La mayoría de los equipos recurre a Elasticsearch en cuanto un product manager menciona la palabra "búsqueda". Normalmente es una decisión equivocada. Elasticsearch resulta costoso de operar, añade complejidad al despliegue y obliga a mantener los datos sincronizados con tu almacén principal. Postgres cuenta con un motor de búsqueda de texto completo capaz desde hace más de una década, y para la mayoría de las aplicaciones resulta más que suficiente.

Los elementos fundamentales son tsvector y tsquery. Un tsvector es una lista ordenada de lexemas normalizados (tokens reducidos a su raíz) extraídos de un texto. Un tsquery es una expresión de búsqueda: términos combinados con operadores booleanos y pesos opcionales.