# Sonic — Fast Lightweight Search Backend in Rust > Sonic is a schema-less search backend written in Rust that acts as a lightweight alternative to Elasticsearch for text search. It ingests text, builds an inverted index, and responds to search queries in microseconds while using minimal memory. ## Install Save as a script file and run: # Sonic — Fast Lightweight Search Backend in Rust ## Quick Use ```bash docker run -d -p 1491:1491 valeriansaliou/sonic:v1.4.9 # Connect via Sonic Channel protocol on port 1491 ``` ## 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.cfg` TOML file - Set authentication passwords per channel mode for security - Tune `bucket_hash_count` and `kv_pool` based 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. ## Sources - https://github.com/valeriansaliou/sonic - https://github.com/valeriansaliou/sonic/blob/master/CONFIGURATION.md --- Source: https://tokrepo.com/en/workflows/969e8641-3b63-11f1-9bc6-00163e2b0d79 Author: Script Depot