Zerops provides a fully managed Typesense search engine service that combines developer productivity with enterprise-grade reliability. The platform handles infrastructure complexity through automated deployment, scaling, and maintenance while providing developers full access to Typesense’s native capabilities.
Supported Versions
Zerops currently supports Typesense version 27.1.
When importing a service, use version format:
Service Configuration
Our Typesense implementation comes with carefully tuned defaults that diverge from the standard Typesense configuration:
thread-pool-size: 16
num-collections-parallel-load: 8
These defaults are optimized for most common use cases and managed by the platform. If you need to adjust these settings, please contact us through our support channels.
Data Persistence
Typesense data is automatically persisted to disk at /var/lib/typesense.
This ensures that data remains intact during service restarts (Typesense automatically reloads the persisted data into memory upon startup).
This persistence mechanism works in both HA and non-HA deployment modes, though with different reliability guarantees.
Deployment Modes
The choice between HA and non-HA mode must be made during service creation and cannot be changed later. Make sure to carefully consider your requirements before deploying.
Non-HA Mode
- Suitable for development and testing
- Data persistence not guaranteed during node failures
- Lower resource requirements
HA Mode
- Implements Typesense’s native Raft consensus mechanism for data replication
- Deploys as a 3-node cluster by default for optimal reliability
- Scaling configuration of 3-5 or 3-7 nodes for higher workloads is possible upon request (contact support to configure custom node ranges)
- Includes built-in data synchronization across all nodes
- Features automatic leader election to maintain cluster availability
- Recovery typically takes up to 1 minute during node failures or leader transitions
- During these periods, requests may temporarily receive
503 Not Ready or Lagging or 500 Could not find a leader responses
- These states automatically resolve once consensus is reestablished
API Key Management
The master API key is automatically generated and managed by the platform. You can access it through:
- The service access details in the Zerops GUI
- The
apiKey environment variable in your service configuration
Currently, as a security-focused design decision, the master API key cannot be modified after generation.
CORS Configuration
Your Typesense instance comes with CORS enabled by default, ensuring seamless integration with frontend applications. Browser-based clients can directly access the instance by providing the X-Typesense-Api-Key header, maintaining security while enabling straightforward client-side implementation.
Network Architecture & Access
HTTPS Access
When using HTTPS access (either through Zerops subdomain or custom domain), traffic is distributed across nodes via our integrated Nginx proxy layer. This provides a single access point that handles load balancing automatically.
For enabling HTTPS access:
- Configure through the Zerops access documentation
- Or use
enableSubdomainAccess: true when importing a Typesense service
Direct Node Access
Allows access to individual nodes using internal DNS:
- Via Zerops VPN
- Internal Project Access - services within the same project can reach nodes directly
Node Addressing Patterns
Standard format:
node{n}.db.{hostname}.zerops
Example: node1.db.typesenseha.zerops, node2.db.typesenseha.zerops
Stable DNS records:
node-stable-{n}.db.{hostname}.zerops
- Maintain consistent IP mapping until node retirement (scaling down or failure events)
- Example:
node-stable-1.db.typesenseha.zerops, node-stable-2.db.typesenseha.zerops
Quick Start Example
Here’s a simple example of using Typesense with the JavaScript client:
import TypesenseClient from 'typesense'
const client = new TypesenseClient({
nodes: [{
host: 'your-service.zerops.dev', // Your Zerops subdomain
port: '443',
protocol: 'https'
}],
apiKey: process.env.TYPESENSE_API_KEY,
connectionTimeoutSeconds: 2
})
// Create a collection
await client.collections().create({
name: 'companies',
fields: [
{ name: 'company_name', type: 'string' },
{ name: 'num_employees', type: 'int32' },
{ name: 'country', type: 'string', facet: true }
],
default_sorting_field: 'num_employees'
})
// Example search query
const searchResults = await client.collections('companies')
.documents()
.search({
q: 'tech',
query_by: 'company_name',
filter_by: 'country:=USA',
sort_by: 'num_employees:desc'
})
Best Practices
API Key Security
- Never expose the master API key in client-side code
- Generate scoped search-only API keys for frontend applications
- Rotate API keys periodically through your service configuration
High Availability
- Implement retry logic in clients for handling temporary unavailability
- Use stable DNS records for direct node access when needed
- Utilize batch operations for bulk updates
- Configure appropriate timeout values based on your use case
- Consider data volume when designing collection schemas
Use Cases
Typesense excels in:
- Instant Search - Typo-tolerant search with less than 50ms response times
- E-commerce Product Search - Faceted search with filtering and sorting
- Content Discovery - Full-text search across documents and articles
- Geo Search - Location-based search and filtering
- Multi-tenant Applications - Isolated search per customer
Support
For advanced configurations or custom requirements: