10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?

Manticore Search介绍

Manticore Search 是一个使用 C++ 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎完全重写了代码并保持开源。这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。

Manticore Search目前在GitHub收获3.7k star,拥有大批忠实用户。同时开源者在GitHub介绍中明确说明了该项目是是Elasticsearch的良好替代品,在不久的将来就会取代ELK中的E。

10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?

同时,来自 MS 官方的测试表明 Manticore Search 性能比 ElasticSearch 有质的提升:

10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?

在一定的场景中,Manticore 比 Elasticsearch 快 15 倍!完整的测评结果,可以参考:

  • https://manticoresearch.com/blog/manticore-alternative-to-elasticsearch/

优势

它与其他解决方案的区别在于:

  • 它非常快,因此比其他替代方案更具成本效益。例如,Manticore:
    • 对于小型数据,比MySQL快182倍(可重现)
    • 对于日志分析,比Elasticsearch快29倍(可重现)
    • 对于小型数据集,比Elasticsearch快15倍(可重现)
    • 对于中等大小的数据,比Elasticsearch快5倍(可重现)
    • 对于大型数据,比Elasticsearch快4倍(可重现)
    • 在单个服务器上进行数据导入时,最大吞吐量比Elasticsearch快最多2倍(可重现)
  • 由于其现代的多线程架构和高效的查询并行化能力,Manticore能够充分利用所有CPU核心,以实现最快的响应时间。
  • 强大而快速的全文搜索功能能够无缝地处理小型和大型数据集。
  • 针对小、中、大型数据集提供逐行存储。
  • 对于更大的数据集,Manticore通过Manticore Columnar Library提供列存储支持,可以处理无法适合内存的数据集。
  • 自动创建高效的二级索引,节省时间和精力。
  • 成本优化的查询优化器可优化搜索查询以实现最佳性能。
  • Manticore是基于SQL的,使用SQL作为其本机语法,并与MySQL协议兼容,使您可以使用首选的MySQL客户端。
  • 通过PHP、PythonJavaScript、Java、Elixir和Go等客户端,与Manticore Search的集成变得简单。
  • Manticore还提供了一种编程HTTP JSON协议,用于更多样化的数据和模式管理。
  • Manticore Search使用C++构建,启动快速,内存使用最少,低级别优化有助于其卓越性能。
  • 实时插入,新添加的文档立即可访问。
  • 提供互动课程,使学习轻松愉快。
  • Manticore还拥有内置的复制和负载均衡功能,增加了可靠性。
  • 可以轻松地从MySQL、PostgreSQL、ODBC、xml和csv等来源同步数据。
  • 虽然不完全符合ACID,但Manticore仍支持事务和binlog以确保安全写入。
  • 内置工具和SQL命令可轻松备份和恢复数据。

Craigslist、Socialgist、PubChem、Rozetka和许多其他公司使用 Manticore 进行高效搜索和流过滤。

使用

Docker 镜像可在Docker Hub上获取:

  • https://hub.docker.com/r/manticoresearch/manticore/

要在 Docker 中试验 Manticore Search,只需运行:

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

之后,可以进行其他操作,例如创建表、添加数据并运行搜索:

create table movies(title textyear int) morphology='stem_en' html_strip='1' stopwords='en';

insert into movies(title, yearvalues ('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'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');

完整文档和开源代码,可以移步:

  • https://github.com/manticoresoftware/manticoresearch

后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?
加我好友,拉你进群

原文始发于微信公众号(Java知音):10倍提升效率,号称取代 Elasticsearch 的轻量级搜索引擎到底有多强悍?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/147703.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!