介绍

Manticore Search 是一个高性能、多存储数据库,专为搜索和分析设计,提供极速的全文搜索、实时索引以及向量搜索和列存储等高级功能,实现高效的数据分析。它既能处理小型数据集,也能处理大型数据集,为现代应用提供无缝扩展性和强大的洞察能力。

作为一个开源数据库(可在 GitHub 获取),Manticore Search 于2017年创建,是对 Sphinx Search 引擎的延续。我们的开发团队汇集了 Sphinx 的所有优点,并显著提升了其功能,修复了数百个漏洞(详见我们的 更新日志)。Manticore Search 是一个现代的、快速且轻量级的数据库,拥有卓越的全文搜索能力,基于对其前身近乎完全的重写构建。

Manticore 的主要特点:

强大且快速的全文搜索,适用于小型和大型数据集

向量搜索功能

Manticore Search 支持将机器学习模型生成的嵌入向量添加到每个文档中,然后对其执行最近邻搜索。这让您能够构建相似度搜索、推荐系统、语义搜索和基于 NLP 算法的相关性排名等功能,包括图像、视频和音频搜索。

JOIN

Manticore Search 支持通过 SQL 和 JSON 执行JOIN查询,允许您合并多个表中的数据。

多线程

Manticore Search 利用智能查询并行处理来降低响应时间,并在需要时充分利用所有 CPU 核心。

基于成本的查询优化器

基于成本的查询优化器利用索引数据的统计信息,评估给定查询的不同执行计划的相对成本。这样优化器可以确定检索所需结果的最有效计划,考虑到索引数据大小、查询复杂度及可用资源等因素。

存储选项

Manticore 提供行存储和列存储选项,以适应不同规模的数据集。传统且默认的行存储选项适用于所有大小的数据集——小型、中型及大型,而列存储选项则通过 Manticore Columnar Library 提供,适用于更大规模的数据集。这两种存储选项的关键区别在于,行存储要求所有属性(全文字段除外)保存在 RAM 中以获得最佳性能,而列存储则不要求,从而实现更低的内存消耗,但可能带来略微较慢的性能(如 https://db-benchmarks.com/ 上的统计所示)。

自动二级索引

Manticore Columnar Library 使用分段几何模型索引 (PGM-index),利用索引键与其内存位置之间的学习映射。该映射的紧凑性及独特的递归构建算法使 PGM-index 成为空间效率远超传统索引的数据结构,同时仍提供最优的查询和更新性能。二级索引默认对所有数值和字符串字段开启,也可针对 JSON 属性启用。

优先 SQL

Manticore 的原生语法是 SQL,支持通过 HTTP 和 MySQL 协议执行 SQL,允许通过任何编程语言中的流行 MySQL 客户端连接。

HTTP JSON

为了更程序化地管理数据和模式,Manticore 提供了类似 Elasticsearch 的HTTP JSON协议。

兼容 Elasticsearch 的写入

您可以执行兼容 Elasticsearch 的插入替换 JSON 查询,从而使 Manticore 可与 Logstash(版本 < 7.13)、Filebeat 及 Beats 家族的其他工具一起使用。

声明式和命令式的模式管理

轻松在线或通过配置文件创建、更新和删除表。

C++的优势和PHP的便利性

Manticore Search守护进程用C++编写,提供快速启动时间和高效的内存利用率。低级别的优化进一步提升了性能。另一个关键组件,称为Manticore Buddy,用PHP编写,用于不需要闪电般的响应速度或极高处理能力的高级功能。虽然对C++代码进行贡献可能是一项挑战,但使用Manticore Buddy添加新的SQL/JSON命令应该是简单的过程。

实时插入

新添加或更新的文档可以立即读取。

互动课程,轻松学习

我们提供免费互动课程,使学习变得轻松。

事务

虽然Manticore不完全符合ACID标准,但它支持隔离事务以实现原子更改,并支持二进制日志以确保安全写入。

内置复制和负载均衡

数据可以分布在服务器和数据中心之间,任何Manticore Search节点都可以作为负载均衡器和数据节点。Manticore使用Galera库实现近乎同步的多主复制,确保所有节点的数据一致性,防止数据丢失,并提供出色的复制性能。

内置备份功能

Manticore配备了外部工具manticore-backupBACKUP SQL命令,简化了备份和恢复数据的过程。或者,您可以使用mysqldump进行逻辑备份

开箱即用的数据同步

indexer工具和Manticore的全面配置语法使其易于从MySQL、PostgreSQL、ODBC兼容的数据库、XML和CSV等源同步数据。

集成选项

您可以使用FEDERATED引擎ProxySQL将Manticore Search与MySQL/MariaDB服务器集成。

您可以使用Apache SupersetGrafana可视化存储在Manticore中的数据。可以使用各种MySQL工具以交互方式开发Manticore查询,例如HeidiSQLDBForge

您还可以使用Manticore Search与Kibana

简化流过滤

Manticore提供了一种特殊表类型,即"percolate"表,允许您搜索查询而不是数据,使其成为高效过滤全文数据流的工具。只需将查询存储在表中,通过将每批文档发送到Manticore Search处理数据流,并接收匹配您存储查询的结果。

可能的应用

Manticore Search具有广泛的应用场景,包括:

  • 全文搜索

    • 适用于电子商务平台,实现快速准确的产品搜索,具有自动补全和模糊搜索等功能。
    • 适用于内容丰富的网站,使用户能够快速找到相关文章或文档。
  • 数据分析

    • 使用Beats/LogstashVector.devFluentbit将数据导入Manticore Search。
    • 使用Manticore的列式存储和OLAP功能高效分析大数据集。
    • 使用Manticore在几毫秒内对太字节的数据执行复杂查询。
    • 使用Kibana、GrafanaApache Superset可视化数据。
  • 分面搜索

    • 使用户能够通过价格、品牌或日期等类别过滤搜索结果,提供更精细的搜索体验。
  • 地理空间搜索

    • 使用Manticore的地理空间功能实现基于位置的搜索,例如查找附近的餐厅或商店。
  • 拼写纠正

    • 自动纠正用户在搜索查询中的拼写错误,提高搜索准确性和用户体验。
  • 自动补全

    • 实时为用户输入提供建议,提高搜索的可用性和速度。
  • 数据流过滤

    • 使用percolate表高效过滤和处理实时数据流,例如社交媒体帖子或日志数据。

要求

  • 架构:arm64或x86_64
  • 操作系统:基于Debian(例如Debian、Ubuntu、Mint)、基于RHEL(例如RHEL、CentOS、Alma、Oracle Linux、Amazon Linux)、Windows或MacOS。
  • Manticore列库,提供列式存储二级索引,需要具有SSE >= 4.2的CPU。
  • 对磁盘空间或RAM没有特定要求。一个空的Manticore Search实例仅使用大约40MB的RSS RAM。
Last modified: October 21, 2025