当前位置: 首页 > news >正文

告别臃肿!Elasticsearch平替Manticore登场

告别臃肿!Elasticsearch平替Manticore登场

Elasticsearch 的困境

在大数据搜索和分析领域,Elasticsearch 一直是备受青睐的工具,它凭借强大的全文搜索、实时分析能力以及分布式架构,在日志分析、电商搜索、企业信息检索等众多场景中广泛应用。然而,随着业务数据量的不断增长和应用场景的日益复杂,Elasticsearch 的一些问题也逐渐浮出水面。

资源占用过高是 Elasticsearch 较为突出的问题。当数据量达到一定规模,其对内存、CPU 和磁盘的需求急剧上升。例如在一些大型电商平台,随着商品数量突破千万级别,Elasticsearch 集群的内存常常被占满,CPU 使用率长期居高不下,导致服务器响应迟缓,甚至出现服务中断的情况 。在日志分析场景中,大量的日志数据持续写入,会使磁盘 I/O 频繁,不仅影响数据写入速度,还容易导致磁盘空间不足,进而影响整个系统的稳定性。

部署和维护的复杂性也是 Elasticsearch 的一大痛点。搭建一个高可用的 Elasticsearch 集群,需要考虑节点配置、分片设置、副本策略、集群间通信等多个方面。每一个环节出现问题,都可能引发集群故障。而且,随着业务发展需要对集群进行扩展时,又要面临数据迁移、负载均衡等复杂操作。对于一些技术实力有限的中小团队来说,这无疑是巨大的挑战,不仅增加了开发和运维成本,还可能因为配置不当而无法充分发挥 Elasticsearch 的性能优势。

在查询性能方面,虽然 Elasticsearch 在大多数情况下表现出色,但当数据量和查询复杂度达到一定程度时,查询延迟会明显增加。复杂的聚合查询、多条件关联查询,往往需要耗费大量时间来处理,这对于一些对实时性要求极高的业务场景,如金融交易实时监控、在线游戏数据统计等,是难以接受的。

面对 Elasticsearch 这些困境,我们是否有更好的选择呢?有没有一款轻量级的替代品,既能满足我们对搜索和分析的需求,又能避免这些问题呢?答案是肯定的,那就是 Manticore。

Manticore 是什么

Manticore 诞生于 2017 年 ,它的前身是 Sphinx Search。作为一款开源的高性能搜索引擎,Manticore 充分吸收了 Sphinx 的优点,并对其进行了大刀阔斧的改进,修复了数百个错误,几乎完全重写了代码,从而摇身一变成为一个功能全面、性能卓越的轻量级数据库,尤其在全文搜索方面展现出了惊人的实力。

从技术特点来看,Manticore 使用 C++ 开发,这使得它具备了出色的性能和资源利用效率。它拥有现代的多线程架构,能够充分发挥 CPU 多核的优势,实现高效的查询并行化,大大缩短了响应时间。在处理大规模数据时,Manticore 提供了灵活的存储选项,不仅支持传统的逐行存储,还通过 Manticore Columnar Library 为更大的数据集提供列存储支持,使得它能够处理那些无法完全装入内存的数据,极大地扩展了应用场景。

Manticore 对全文搜索的支持非常强大,提供了超过 20 个全文运算符和 20 多个排名因素,能够实现精准的搜索匹配和智能的结果排序。无论是简单的关键词查询,还是复杂的语义搜索,Manticore 都能轻松应对。它还支持查询自动完成、模糊搜索、词形还原、停用词处理、同义词处理等功能,为用户提供了更加便捷和智能的搜索体验。 此外,Manticore 还内置了向量搜索功能,这使得它能够很好地支持基于机器学习模型生成的嵌入数据的相似性搜索,在人工智能驱动的应用场景中如鱼得水,为语义搜索、推荐系统等提供了有力的技术支持。

Manticore 优势大揭秘

Manticore 之所以能够成为 Elasticsearch 的有力替代品,是因为它在性能、资源占用、语法使用以及功能多样性等方面都展现出了显著的优势。

(一)性能卓越

Manticore 的性能优势十分显著。在查询速度上,当处理 100 万条数据时,Elasticsearch 完成一次复杂查询平均需要 500 毫秒,而 Manticore 仅需 100 毫秒,速度提升了 5 倍 。在数据导入吞吐量方面,单服务器环境下,Manticore 每秒可以导入 10 万条数据,而 Elasticsearch 每秒只能导入 5 万条 。这种性能上的巨大差异,使得 Manticore 在处理大数据量时,能够快速响应用户的查询请求,大大提高了系统的运行效率。

(二)资源友好

资源占用方面,Manticore 表现得非常友好。在一个包含 1000 万条数据的索引场景中,Elasticsearch 占用内存高达 5GB,而 Manticore 仅占用 1GB,内存占用减少了 80% 。这使得 Manticore 在资源有限的环境中,如容器化部署和边缘计算场景中,能够轻松运行。在容器化部署时,Manticore 的低内存占用可以让更多的容器在同一服务器上运行,提高了资源利用率;在边缘计算场景中,由于边缘设备的资源相对匮乏,Manticore 能够以较小的资源消耗稳定运行,为边缘设备上的应用提供高效的搜索服务。

(三)语法亲民

Manticore 原生支持 SQL 语法,并且兼容 MySQL 协议,这对于有 SQL 基础的开发者来说,学习成本几乎为零。以查询操作举例,在 Elasticsearch 中,进行一个简单的全文搜索,需要使用特定的 DSL(Domain Specific Language)语法,如:

{"query":{"match":{"content":"搜索关键词"}}}

而在 Manticore 中,只需要使用熟悉的 SQL 语句即可:

SELECT*FROMtable_nameWHEREMATCH('搜索关键词');

这种语法上的便利性,使得开发者可以快速上手 Manticore,减少了学习新语法的时间和精力成本,能够更加高效地进行开发和维护工作。

(四)功能强大

Manticore 的功能也非常强大,能够满足多样化的搜索需求。它支持实时索引,数据插入后可以立即被搜索到,这对于实时性要求较高的应用场景,如实时新闻搜索、即时通讯消息搜索等,非常适用。Manticore 还具备向量搜索功能,能够进行基于向量相似度的搜索,在图像搜索、推荐系统等领域有着广泛的应用。例如,在图像搜索中,通过将图像特征转化为向量,Manticore 可以快速找到与目标图像向量最相似的其他图像。Manticore 还支持多语言,无论是中文、英文还是其他语言的文本,都能进行高效的搜索和处理,为全球化应用提供了有力支持。

如何上手 Manticore

对于渴望尝试 Manticore 的小伙伴们,上手过程其实非常简单。下面就为大家介绍在不同操作系统下的安装方法。

如果你使用的是 Docker,那么安装 Manticore 只需一键操作。在命令行中输入以下命令:

dockerrun-eEXTRA=1--namemanticore--rm-dmanticoresearch/manticore

这条命令会在后台启动一个名为 manticore 的容器,运行 Manticore 服务。其中,\-e EXTRA=1用于设置额外的环境变量,\-\-name manticore为容器命名,\-\-rm表示容器停止后自动删除,manticoresearch/manticore是 Manticore 的 Docker 镜像名称。

如果你使用的是 Linux 系统,以 Ubuntu 为例,可以通过包管理器进行安装。首先更新软件源:

sudoapt-getupdate

然后安装 Manticore:

sudoapt-getinstallmanticore-search

对于 CentOS 系统,安装步骤稍有不同。首先添加 Manticore 官方 YUM 仓库:

sudoyuminstallhttps://repo.manticoresearch.com/manticore-repo.noarch.rpm

接着安装 Manticore Search 核心组件:

sudoyuminstallmanticore manticore-extra

Windows 用户可以下载官方提供的安装程序进行安装。在下载完成后,双击安装程序,按照提示一步步进行操作即可完成安装。

安装完成后,我们还需要进行一些基本的配置。Manticore 的配置文件通常是manticored\.conf,主要配置内容包括定义索引、设置监听端口、指定数据来源等。例如,我们可以在配置文件中定义一个简单的索引:

index my_index{source=my_source path=/var/lib/manticore/my_index docinfo=extern charset_type=sbcs}

这里my\_index是索引名称,my\_source指定数据来源,path表示索引文件存储路径,docinfo = extern表示将文档信息存储在外部文件中,charset\_type = sbcs指定字符集类型为单字节字符集。在设置监听端口时,你可以这样配置:

searchd{listen=9306:mysql41}

这表示 Manticore 监听 9306 端口,使用 MySQL 协议进行通信。 完成配置后,启动 Manticore 服务,在命令行中输入:

sudosystemctl start manticore

至此,Manticore 就安装并配置完成啦,你可以开始体验它强大的搜索功能了!

http://www.jsqmd.com/news/679046/

相关文章:

  • 掌握Agent智能体项目管理秘籍:让AI成为你的得力助手!
  • MySQL跨版本迁移数据格式不兼容_使用mysqldump全量导出导入
  • TranslucentTB开机自启动失效:Windows启动机制深度解析与系统级解决方案
  • 深度解析HsMod:基于BepInEx的炉石传说高级插件开发实战指南
  • 【flutter for open harmony】Flutter 聊天应用实战:go_router 路由管理完全实现指南
  • 宝塔面板网站备份文件太大怎么办_调整备份压缩等级与频率
  • CLIP-GmP-ViT-L-14环境部署:Ubuntu 22.04 + Python3.10 + torch2.3一键适配
  • 5步深度解析:ComfyUI-SUPIR图像超分辨率实战指南
  • 压缩软件应该选RAR格式还是ZIP格式?高压缩率高安全VS高兼容性之争的何去何从?
  • GLM-OCR与LaTeX工作流集成:自动将手写公式转换为代码
  • Java Loom响应式转型黑盒解密:基于JFR+Async-Profiler绘制的首张虚拟线程调度热力图(仅限本文公开)
  • 高企管理成熟度自诊与研发系统对接指南:从“诊断报告”到“数据闭环”的落地路径
  • ERNIE-Image 深度测评:百度 8B 小模型如何撼动文生图格局
  • 2008-2024年上市公司企业创新效率数据+stata代码
  • RK3588核心板散热与高速信号完整性实战:从Layout到打样的完整检查清单
  • 超算跑VASP总报错?试试这个‘模型预处理’ checklist:从POSCAR检查到INCAR参数避雷
  • 终极网盘直链下载助手完整指南:如何一键获取八大网盘真实下载地址
  • 如何在 pytest 中通过组合多个 fixture 实现参数化测试
  • 高企管理成熟度自诊报告:国内首创“五维进化模型”,从“拿证”到“卓越”的导航图
  • 如何在 Go 中基于接口样例动态创建对象切片
  • PDF与电子表格智能同步工具的技术实现与优化
  • 2000-2024年各省金融发展水平、存贷款余额数据
  • 如何5分钟将B站视频转为文字?bili2text开源工具完全指南
  • Loom响应式转型成本黑洞扫描清单(含JFR火焰图定位模板、AsyncProfiler内存泄漏检测脚本、TCO建模Excel表)
  • 2026年策略:AI化比数字更重要
  • 微信消息自动转发终极指南:如何实现多群消息智能同步的完整教程
  • 结对编程——简易考试在线系统
  • 多线程缓存性能优化与内存子系统深度解析
  • 专知智库高企管理成熟度自诊系统:国内首个“政策+理论+方法论”深度融合的进化导航图
  • 潍坊脱发白发养发馆推荐?超200万用户见证,黑奥秘头发健康全周期管理 - 美业信息观察