Introduction
Sonic is a fast, lightweight, schema-less search backend that replaces heavy search engines when you need simple full-text search without the overhead. Built in Rust, it focuses on speed and minimal resource usage, making it ideal for small to medium applications.
What Sonic Does
- Accepts text via an ingestion channel and builds an internal inverted index
- Responds to search and auto-suggest queries in sub-millisecond time
- Supports multiple collections and buckets for data isolation
- Provides a simple Sonic Channel protocol over TCP for integration
- Runs with under 30 MB of RAM for typical workloads
Architecture Overview
Sonic uses a custom Sonic Channel text protocol (not HTTP) split into three modes: ingest for pushing data, search for querying, and control for administration. Internally it stores an FST-based index on disk using RocksDB, keeping only hot data in memory. This design allows Sonic to handle millions of indexed objects on commodity hardware.
Self-Hosting & Configuration
- Deploy via Docker or compile from source with Rust stable
- Configuration lives in a single
config.cfgTOML file - Set authentication passwords per channel mode for security
- Tune
bucket_hash_countandkv_poolbased on dataset size - Supports log-level configuration and PID file for daemon management
Key Features
- Written in Rust for memory safety and zero-GC performance
- Sub-millisecond query latency on indexed collections
- Auto-suggest and auto-complete support built in
- Tiny memory footprint compared to Elasticsearch or Solr
- Multi-tenant via collections and buckets
Comparison with Similar Tools
- Elasticsearch — full-featured but resource-heavy; Sonic trades features for speed and simplicity
- Meilisearch — HTTP-based with rich features; Sonic is lower-level with less overhead
- Typesense — typo-tolerant HTTP search; Sonic uses a custom TCP protocol and is more minimal
- Tantivy — a Rust search library, not a standalone server; Sonic wraps its own index engine
- Zinc — lightweight Elasticsearch alternative with HTTP; Sonic is even simpler with channel protocol
FAQ
Q: Does Sonic support HTTP REST APIs? A: No. Sonic uses its own Sonic Channel text protocol over TCP. Client libraries are available for most languages.
Q: Can Sonic replace Elasticsearch for large-scale analytics? A: Sonic is designed for search and suggest on text, not aggregation or analytics. It works best for small-to-medium search needs.
Q: What storage engine does Sonic use? A: Sonic uses RocksDB internally for persistent key-value storage of its inverted index.
Q: Is there a managed cloud version? A: No. Sonic is self-hosted only. Deploy it alongside your application server.