Introducing Manticore Search: A High‑Performance Lightweight Alternative to Elasticsearch
Manticore Search is a modern, open‑source C++‑based full‑text search engine that claims up to 15‑times faster performance than Elasticsearch in certain scenarios, offering SQL compatibility, multi‑threaded architecture, columnar storage, Docker deployment, and extensive client language support.
Introduction
Manticore Search is a high‑performance, open‑source search engine written in C++ and launched in 2017 as the successor to Sphinx Search. It rewrites much of the original code, fixes hundreds of bugs, and adds modern features, positioning itself as a lightweight, full‑featured alternative to Elasticsearch.
Advantages
Key benefits include:
Significant speed improvements – up to 15× faster than Elasticsearch in some benchmarks.
Exceptional performance on small datasets (182× faster than MySQL) and various data sizes, with consistent speed gains across small, medium, and large workloads.
Efficient multi‑threaded query parallelism that fully utilizes CPU cores.
Rich full‑text search capabilities for both small and large datasets.
Row‑level storage for all data sizes and columnar storage via the Manticore Columnar Library for very large datasets.
Automatic secondary index creation, cost‑optimized query optimizer, and SQL‑based native syntax compatible with the MySQL protocol.
Broad client support (PHP, Python, JavaScript, Java, Elixir, Go) and an HTTP JSON protocol for flexible data handling.
Fast startup, minimal memory footprint, real‑time document insertion, built‑in replication and load balancing, and tools for backup and recovery.
Notable users include Craigslist, Socialgist, PubChem, Rozetka, and many others.
Installation & Usage
Installation instructions are available at https://manticoresearch.com/install/ . Docker images can be pulled from Docker Hub:
https://hub.docker.com/r/manticoresearch/manticore/
To run Manticore Search in Docker:
docker run -e EXTRA=1 --name manticore --rm -d manticoresearch/manticore &&
until docker logs manticore 2>&1 | grep -q "accepting connections"; do
sleep 1;
done &&
docker exec -it manticore mysql &&
docker stop manticoreAfter the container is ready, you can create tables, insert data, and perform searches. Example SQL commands:
create table movies(title text, year int) morphology='stem_en' html_strip='1' stopwords='en';
insert into movies(title, year) values
('The Seven Samurai', 1954),
('Bonnie and Clyde', 1954),
('Reservoir Dogs', 1992),
('Airplane!', 1980),
('Raging Bull', 1980),
('Groundhog Day', 1993),
('
Jurassic Park
', 1993),
('Ferris Bueller''s Day Off', 1986);
select highlight(), year from movies where match('the dog');
select highlight(), year from movies where match('days') facet year;
select * from movies where match('google');Documentation & Source
Complete documentation and source code are available at:
https://github.com/manticoresoftware/manticoresearch
For further reading, the author references a detailed benchmark comparing Manticore Search to Elasticsearch: https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/.
Architect
Professional architect sharing high‑quality architecture insights. Topics include high‑availability, high‑performance, high‑stability architectures, big data, machine learning, Java, system and distributed architecture, AI, and practical large‑scale architecture case studies. Open to ideas‑driven architects who enjoy sharing and learning.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.