SeaSearch, motor de búsqueda en Go sobre S3 para apps multi-tenant
El equipo de Seafile libera un motor de búsqueda escrito en Go, con índices en S3 y compatible con la API de Elasticsearch, pensado para aplicaciones con miles de índices.
El equipo detrás de Seafile ha publicado como código abierto SeaSearch, un motor de búsqueda escrito en Go que llevan más de dos años corriendo en producción con su propio proyecto. Está construido sobre ZincSearch y su propuesta se resume en una idea: separar el almacenamiento del cómputo y dejar los índices en S3.
El problema que dice atacar es el del índice duplicado en SaaS multi-tenant. Un índice por cliente es la forma limpia de aislar datos, pero con miles de ellos Elasticsearch acaba atragantándose; lo que suele hacerse es meter a todo el mundo en un único índice, y entonces se pagan a la vez el aislamiento y el rendimiento. SeaSearch permite un número ilimitado de índices porque los datos no viven en el nodo, sino en un backend compartido en S3.
De ahí se derivan varias consecuencias prácticas. Los nodos de cómputo comparten el mismo almacenamiento, así que escalar o hacer failover es casi inmediato: no hay que replicar datos entre máquinas. Para que eso no se note en la latencia, el motor mantiene una caché en disco local de los segmentos inmutables, que son justo los que no van a cambiar.
Compatibilidad con la API de Elasticsearch
La otra pieza que interesa a quien se plantea migrar es la compatibilidad. El proyecto se anuncia como reemplazo directo para la mayoría de los endpoints de consulta de Elasticsearch. Esa palabra, "mayoría", es del autor: no hay lista publicada de lo que queda fuera ni promesa de paridad completa. Tampoco hay cifras de rendimiento ni comparativas contra el propio Elasticsearch, así que la afirmación se sostiene de momento en que llevan dos años usándolo.
En el lado de los recursos, el binario es Go puro y no arrastra una JVM, algo que en despliegues pequeños o con presupuesto de memoria ajustado se agradece. Añade además búsqueda vectorial con soporte para HNSW e IVFPQ, pensando en búsqueda híbrida semántica junto a la clásica por texto.
Para quien administre un SaaS con muchos inquilinos, la idea de apoyar los índices en S3 en lugar de replicarlos por clúster es atractiva en coste y en operación, y ahí es donde este proyecto se juega el interés. En el repositorio está todo lo publicado por ahora: no se indica licencia, ni versión, ni paquetes de despliegue. Antes de mover nada a producción conviene leer el código y comprobar qué consultas concretas se rompen con la compatibilidad parcial.


