Manticore Search 是一款使用 C++ 编写的高性能搜索引擎,诞生于 2017 年,其前身是知名的 Sphinx Search。
它在 Sphinx 的基础上进行了深度改造,显著增强了功能,修复了大量问题,并进行了近乎彻底的重写,同时始终保持开源。这些努力使得 Manticore Search 成为一个现代化、快速、轻量级且功能齐全的数据库,尤其擅长全文搜索。
目前,Manticore Search 在 GitHub 上已获得超过 1.1 万星,拥有大量用户。项目介绍中明确提到,它是 Elasticsearch 的一个优秀替代品,并有望在不远的将来取代 ELK 技术栈中的 “E”(Elasticsearch)。
来自官方的性能测试数据显示,Manticore Search 的性能相比 Elasticsearch 有显著提升。

图1:Manticore Search 与 Elasticsearch 查询性能对比
在某些特定场景下,Manticore 的查询速度甚至能达到 Elasticsearch 的 15 倍。完整的测试报告可参考:
https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/
核心优势
Manticore Search 的独特之处体现在以下几个方面:
-
极致的速度与成本效益:其性能远超许多替代方案。
- 处理小型数据时,比 MySQL 快 182 倍(可复现)。
- 进行日志分析时,比 Elasticsearch 快 29 倍(可复现)。
- 处理小型、中型、大型数据集时,分别比 Elasticsearch 快 15 倍、5 倍和 4 倍(均可复现)。
- 单服务器数据导入峰值吞吐量,比 Elasticsearch 快最多 2 倍(可复现)。
-
现代多线程架构:能够充分利用所有 CPU 核心,通过高效的查询并行化实现最短的响应时间。
-
强大的全文搜索:可无缝处理各种规模数据集的全文检索需求。
-
灵活的存储引擎:为不同规模的数据集提供行式存储,并通过 Manticore Columnar Library 支持列式存储,以处理无法完全放入内存的超大数据集。
-
自动化与智能化:支持自动创建高效的二级索引,并拥有成本优化的查询优化器。
-
兼容 MySQL 协议:原生使用 SQL 语法,与 MySQL 协议兼容,可以直接使用你熟悉的 MySQL 客户端进行操作。这大大降低了 数据库 开发者的学习和使用成本。
-
丰富的生态集成:提供了 PHP、Python、JavaScript、Java、Elixir 和 Go 等多种语言的客户端,并支持 HTTP JSON 协议,便于集成和数据管理。
-
高效底层实现:基于 C++ 构建,启动迅速,内存占用小,底层优化到位。
-
实时性与高可用:支持实时插入,新文档立即可查;内置数据复制和负载均衡功能。
-
便捷的数据同步与运维:可轻松从 MySQL、PostgreSQL、ODBC、XML 和 CSV 等数据源同步数据。支持事务与 Binlog,并提供内置工具方便数据备份恢复。
包括 Craigslist、Socialgist 在内的众多公司都在使用 Manticore Search 来处理高效的搜索和流式过滤任务。
快速上手体验
Manticore Search 提供了 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 manticore
运行后,你可以连接 MySQL 客户端,进行创建表、插入数据和搜索等操作:
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), ('<a href="http://google.com/">Jurassic Park</a>', 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');
项目地址
该项目的源代码和详细文档托管在 GitHub 上,对于这类优秀的 开源实战 项目,深入其代码和社区是学习的最佳途径。
https://github.com/manticoresoftware/manticoresearch
如果你正在寻找一个高性能、轻量级且兼容 SQL 的搜索引擎解决方案,Manticore Search 无疑是一个值得深入评估的选择。更多技术讨论和资源分享,欢迎访问 云栈社区。