励志故事:比Elasticsearch更快的即时开源搜索引擎typesense


这是作者Kishore Nallan每天上班前或下班后的副项目,每天写一些代码,没有最后期限,没有季度目标,没有里程碑。
专注于一件事:每天出现并编写一些代码。有些功能需要一个小时才能实现,有些功能需要几个小时才能实现,有些甚至需要持续数周,但这并不重要,因为没有任何形式的截止日期。
简要总结:

  • 2015 年:原型设计和基准测试各种数据结构(秘诀?)
  • 2016 : 首次正式提交,构建核心模糊文本搜索引擎
  • 2017:HTTP API,支持数字过滤和分面搜索
  • 2018 年:客户端库、只读副本、Hacker News 发布失败
  • 2019 年:赚到第一美元,许多每个人都认为理所当然的小功能
  • 2020 年:集群、Typesense Cloud、多个演示、Hacker News 成功发布
  • 2021 年:全职投入 Typesense,撰写我们的第一篇博文 :)

我们从一个简单的想法开始:通过构建一个开箱即用的令人愉快的搜索引擎,使良好的搜索民主化。即使在我们刚开始时,我们也知道网站和应用程序总是需要搜索,而且这是一个庞大且不断增长的市场。
下面展示了 Typesense 在大型数据集上的作用:

 
与 Elasticsearch 有何不同?
Elasticsearch 是一个大型软件,需要花费大量精力来设置、管理、扩展和微调。它为您提供几千个配置参数,以达到您的理想配置。因此,它更适合拥有带宽使其投入生产、定期监控和扩展的大型团队,尤其是当他们需要存储数十亿个文档和 PB 级数据(例如:日志)时。
Typesense 专为缩短“上市时间”而构建,以获得令人愉悦的搜索体验。它是一种轻量级但功能强大且可扩展的替代方案,专注于开发人员的幸福感和体验,具有清晰的文档记录的 API、清晰的语义和智能的默认值,因此它开箱即用,无需您打开许多旋钮。
Elasticsearch 也运行在 JVM 上,这本身就需要花费大量精力来调整以优化运行。另一方面,Typesense 是一个轻量级的自包含本机二进制文件,因此设置和操作都很简单。
 
特点:
  • 极快:内置 C++。从头开始精心设计,用于低延迟(<50 毫秒)即时搜索。
  • Raft-based Clustering:建立一个高可用的分布式集群。
  • 无运行时依赖性: Typesense 是一个二进制文件,您可以使用单个命令在本地或生产中运行。
  • 一个新的 Typesense 服务器将消耗大约 30 MB 的内存。当您开始索引文档时,内存使用量将相应增加。它增加多少取决于您索引的字段的数量和类型。
    我们努力保持内存中数据结构的精简。给你一个粗略的想法:当 100 万个 Hacker News 标题和它们的点数一起被索引时,Typesense 消耗 165 MB 的内存。相同大小的 JSON 格式磁盘数据为 88 MB。如果您有自己数据集中的任何数字,我们可以将其添加到此部分,请向我们发送 PR!