I'm glad to share our open-sourcing project SeaSearch, a search engine written in Go (built on ZincSearch) that we’ve been running in production for over two years for Seafile project.
After years of using Elasticsearch, we think there are two main problems with Elasticsearch:
It is not lightweight and hard to maintain a cluster
All of seafile tenants' data was stored in a single index and it is slow to search a file in a single library because the whole index need to be searched
Three years ago, we started developing a solution to solve the two problems. Rather than building a search engine from scratch, we built on top of ZincSearch, that is implemented in Go rather than JVM with a smaller runtime footprint and has Elasticsearch API compatibility, but it was still missing something that we get to find out along the way.
We have now open-sourced SeaSearch with the pieces we needed:
S3-backed Storage: Index data lives in S3. Compute nodes share the same backend, making scaling/failover instant (no data replication needed).
Smart Caching: Uses a local disk cache for immutable segments to keep things fast despite the S3 backend.
ES API Compatible: Works as a drop-in replacement for most Elasticsearch query endpoints.
Lightweight Go Runtime: No JVM overhead.
Vector Search: Built-in support for HNSW/IVFPQ for hybrid semantic search.
Hope this helps fellow devs who are stuck in this problem when building multi-tenant SaaS applications. Looking forward to your responses.
I'm glad to share our open-sourcing project SeaSearch, a search engine written in Go (built on ZincSearch) that we’ve been running in production for over two years for Seafile project.
After years of using Elasticsearch, we think there are two main problems with Elasticsearch:
It is not lightweight and hard to maintain a cluster
All of seafile tenants' data was stored in a single index and it is slow to search a file in a single library because the whole index need to be searched
Three years ago, we started developing a solution to solve the two problems. Rather than building a search engine from scratch, we built on top of ZincSearch, that is implemented in Go rather than JVM with a smaller runtime footprint and has Elasticsearch API compatibility, but it was still missing something that we get to find out along the way.
We have now open-sourced SeaSearch with the pieces we needed:
S3-backed Storage: Index data lives in S3. Compute nodes share the same backend, making scaling/failover instant (no data replication needed).
Smart Caching: Uses a local disk cache for immutable segments to keep things fast despite the S3 backend.
ES API Compatible: Works as a drop-in replacement for most Elasticsearch query endpoints.
Lightweight Go Runtime: No JVM overhead.
Vector Search: Built-in support for HNSW/IVFPQ for hybrid semantic search.
Hope this helps fellow devs who are stuck in this problem when building multi-tenant SaaS applications. Looking forward to your responses.
URL?
https://github.com/seacloud-lab/seasearch