Por qué autoalojar su motor de búsqueda en un VPS
Un motor de búsqueda dedicado sustituye los lentos LIKE '%...%' por una búsqueda instantánea, tolerante a los errores tipográficos y ordenada por relevancia. Autoalojarlo en un VPS le evita la facturación por número de búsquedas o de documentos de las soluciones SaaS, y mantiene su índice (es decir, los datos de sus clientes y su catálogo) en su propia infraestructura. Meilisearch y Typesense están diseñados para el 'search-as-you-type': respuestas en unos milisegundos, API REST sencilla, tolerancia a errores tipográficos y facetas incluidas. Meilisearch destaca por su facilidad de manejo y por la calidad de la relevancia por defecto; Typesense pone el acento en el rendimiento bruto, el control fino del ranking y el clustering de alta disponibilidad. Typesense mantiene todo el índice buscable en RAM; Meilisearch lo guarda en disco (LMDB, un archivo mapeado en memoria) y usa la RAM como caché: en ambos casos, la memoria dimensiona directamente su VPS.
Las ventajas de un motor de búsqueda autoalojado
- Búsqueda instantánea con tolerancia a errores tipográficos, sin programar el algoritmo
- Ninguna facturación por documento indexado ni por consulta
- Índice y datos de negocio conservados en su VPS
- Facetas, filtros y ordenación para construir interfaces de catálogo ricas
- API REST y claves de alcance restringido para un uso seguro desde el frontend
- Sinónimos y reglas de relevancia ajustables a su vocabulario de negocio
Requisitos: la RAM ante todo
La RAM es el recurso crítico: Typesense carga todo el índice buscable en memoria (su documentación calcula de 2 a 3 veces el tamaño de los campos buscables), y Meilisearch responde tanto más rápido cuanto más de su índice cabe en memoria. Para unas decenas de miles de documentos, 1 o 2 GB de RAM y 1 vCPU bastan. Para cientos de miles o unos millones de documentos con facetas, apunte a 4 GB y 2 vCPU. Un disco SSD acelera la persistencia y la recarga al arrancar. Necesita Docker y Compose, un subdominio (search.sudominio.com) si expone la API al frontend, y un reverse proxy para el TLS. Prevea una clave maestra robusta y claves de búsqueda de alcance limitado para no exponer nunca la clave de administración en el navegador.
Desplegar Meilisearch (o Typesense) en un VPS
Definir el servicio Docker
Declare
getmeili/meilisearch(otypesense/typesense), monte un volumen para la persistencia del índice y pase la clave maestra mediante una variable de entorno (MEILI_MASTER_KEYoTYPESENSE_API_KEY), generada conopenssl rand -base64 32y guardada en.env. Para Meilisearch, añadaMEILI_ENV=production: la clave maestra (16 bytes como mínimo) pasa a ser obligatoria y la vista previa de búsqueda integrada se desactiva. Vincule el puerto7700/8108únicamente en local.Arrancar y comprobar el estado de salud
Ejecute
docker compose up -dy luego pruebecurl http://127.0.0.1:7700/health. Una respuestaavailableconfirma que el motor está listo para recibir documentos.Crear el índice y cargar los datos
Envíe sus documentos en JSON a través de la API (POST en
/indexes/produits/documents). Defina los atributos buscables, filtrables y ordenables; en un motor de búsqueda, el orden de declaración de los atributos buscables influye directamente en la relevancia.Exponer la API detrás de un reverse proxy
Redirija search.sudominio.com hacia el puerto local con Caddy o Nginx para el HTTPS. Limite el CORS a su dominio de aplicación: en el proxy para Meilisearch, que no tiene opción CORS, y con
--cors-domainspara Typesense. El CORS solo bloquea a los navegadores: lo que protege realmente el motor es la clave de alcance restringido.Generar claves de alcance restringido
Cree una clave limitada a las operaciones de búsqueda sobre un índice concreto, para usarla en el navegador. La clave maestra no debe salir nunca del servidor ni aparecer en el código del frontend.
Sincronizar con su base de datos
Implemente un job (webhook o tarea programada) que envíe las creaciones y las actualizaciones al índice con cada cambio en la base de datos, para mantener la búsqueda coherente con la fuente de verdad.
Desplace la tabla
| Criterio | Meilisearch | Typesense |
|---|---|---|
| Facilidad de manejo | Muy sencilla, relevancia por defecto excelente | Sencilla, control más explícito |
| Tolerancia a errores tipográficos | Nativa y ajustable | Nativa, configurable por campo |
| Control del ranking | Reglas de clasificación ordenadas | Muy granular (ranking por campo, pesos) |
| Facetas / filtros | Completas | Completas y de alto rendimiento |
| Alta disponibilidad | Replicación y sharding reservados a la edición Enterprise | Clustering Raft integrado |
| Consumo de memoria | Índice en disco, RAM usada como caché | Todo el índice buscable en RAM |
| Búsqueda vectorial | Compatible | Compatible |
| Lenguaje / despliegue | Rust, binario único (MIT; edición Enterprise bajo BUSL 1.1) | C++, binario único (GPL v3) |
Antes de sobredimensionar su VPS, indexe únicamente los campos realmente buscables. Almacenar un texto HTML completo y pesado en el índice infla la RAM sin necesidad: indexe el título, las etiquetas y un resumen, y mantenga el contenido pesado en la base de datos, recuperado tras el clic. Reducirá notablemente la huella de memoria sin perder relevancia.