编程

Algolia vs ElasticSearch vs Meilisearch vs Typesense 之比较

657 2024-08-20 01:50:00

此表旨在为你提供每个搜索引擎中关键功能的客观并排比较,它们是基于每个搜索引擎的文档。

本文努力在下面提供准确的信息,但如果你发现任何问题,可以留言交流。

概述

 TypesenseAlgoliaElasticSearchMeilisearch
源码 完全开源专有闭源源码可得,SSPL 许可证完全开源
首次提交2015201220102018
语言C++C++JavaRust
核心搜索算法 从头构建从头构建基于 Lucene 构建从头构建
适合场景即时的键入搜索体验,适合 RAM,可容纳高达 24 TB(或当前商用 RAM 大小)的数据集。即时的键入时搜索体验,可容纳高达 128 GB的数据集。PB 级数据集上的通用搜索和聚合(例如:日志数据)在不需要高可用容错设置的用例中提供即时键入搜索体验。建议提供足够的 RAM,将整个数据集保存在 RAM 中,以获得理想的性能。
主要索引位置RAMRAM磁盘、RAM 缓存带有内存映射文件的磁盘

部署

 TypesenseAlgoliaElasticSearchMeilisearch
自托管选项✅️✅️✅️
SaaS选项✅️✅️✅️✅️
高可用 / 容错

基于 RAFT 的多节点集群


基于 RAFT 的多节点集群


主从复制


仅支持单节点设置,这会产生单点故障,因此无法容错/生产就绪。
支持 GPU 加速
可以选择使用 GPU(如果可用)
类似于 CDN 的 Geo-分布式集群 


 

支持自托管和 SaaS 选项,称为搜索交付网络



高级版中可用,称为分布式搜索网络


 

不作为托管服务的一部分提供

运行时依赖

无。自包含的二进制文件。
 

内置高性能 HTTP 服务器,可直接暴露给前端。

不适用,因其是 SaaS 服务需要 JVM 及应用后台。 

无法直接暴露给前端,需要 nginx、apache 或类似的服务器作为反向代理
无。自包含二进制文件。

内置高性能 HTTP 服务器,可直接暴露给前端。建议前端使用 nginx、apache 或类似的服务器作为反向代理,以管理 SSL 证书的续约。
索引向后兼容性
完全向后兼容
N/A

作为 SaaS 服务,Algolia 不暴露这些细节给最终用户。


向后兼容最多1个主要版本。


完全向后兼容
升级路径替换二进制文件,重启进程。无需重新索引。托管的 SaaS 服务,不需要升级。替换二进制文件,重启进程。如果升级超过1个主要版本,则需要重新索引。 创建 dump,替换二进制文件,加载 dump。

特性

 TypesenseAlgoliaElasticSearchMeilisearch
REST API✅️✅️✅️✅️
拼写容错✅️✅️✅️

较慢且影响相关性
✅️
查询字段权重 &
提升
✅️✅️
Scoped API Key &
多租户索引
✅️✅️
联合多索引搜索✅️✅️✅️✅️
Grouping / Distinct✅️

最多一个 distinct 字段
✅️🔶

最多一个 distinct 字段,不支持分组
JOIN 跨多个索引✅️
动态排序

排序字段可以在查询时使用单个索引定义

🔶

需要为每个排序顺序创建重复索引,用于穷举排序。


虚拟副本索引可用于相关排序。



排序字段可以在查询时使用单个索引定义


排序字段需要预先定义,但可以在查询时使用单个索引进行更改。
Faceting & Filtering✅️✅️✅️
按照过滤分数排名✅️✅️
Facet Value Searches✅️✅️✅️
Result Pinning / Merchandising✅️

免费版最多 10 条结果,高级版最多 10,000 条结果
✅️

只有在闭源版本中可用
同义词✅️✅️

高达 10,000 每个索引
✅️✅️
动态同义词建议❌️✅️

高级版中可用
支持语言所有语言所有语言所有语言所有语言
禁用词✅️✅️✅️
词干提取✅️✅️
地理搜索🔶

仅限于一个地理点
✅️🔶

仅限于一个地理点
记录 ID 自动生成✅️✅️

ID 需要预先生成
按字符串字段排序


 

每个搜索查询最多 3 个 tie-breaking 排序字段



但不推荐
✅️
搜索分析客户端及服务端客户端及服务端
记录 Schema 验证✅️

强制映射
Schemaless

需要启用自动 schema 检测


强制映射
自定义排名规则✅️✅️✅️
负向关键字搜索
(-query)
✅️✅️✅️
短语搜索
("some query")
✅️✅️
向量搜索
(近邻搜索)
✅️
语义搜索

称为 NeuralSearch
相似搜索

可以使用向量搜索实现
可以使用向量搜索实现
图片搜索

内置 CLIP 集成
语音搜索

内置 Whisper 集成
会话式 Q&A 搜索

内置 RAG 管道并与 OpenAI 和 Cloudflare LLMs 集成
推荐🔶️

非开箱即用,不过可用适应向量搜索实现
🔶️

非开箱即用,不过可用适应向量搜索实现
用户级搜索定制🔶️

非开箱即用,不过可用适应向量搜索实现。


高级版功能
集合别名✅️✅️
集合置换✅️✅️✅️✅️
A/B 测试结果🔶️

可通过基于 AB 测试置换集合及 Bucket 的搜索参数实现


高级版功能
🔶️

可通过基于 AB 测试置换集合及 Bucket 的搜索参数实现
查询建议✅️✅️
可视化面板

在 Typesense Cloud 云上
✅️🔶️

第三方插件
✅️

仅搜索
网站爬虫

DocSearch 爬虫用于文档站


DocSearch 爬虫用于文档站。
高级版有通用网站爬虫。


DocSearch 爬虫用于文档站。
搜索 UI 组件库

 

支持 InstantSearch.js



InstantSearch.js


搜索 UI,需要托管搜索


 InstantSearch.js 的 Forked 版本
隐私友好

不收集自托管和 SaaS 选项中的使用分析或个人数据。
🔶

收集个人数据,使用分析及 IP 地址。

🔶

🔶

收集个人数据、硬件信息、RAM 使用信息、用于许可的唯一指纹ID。

 

🔶

收集硬件信息、总文档数、文档更新数量、服务器正常运行时间、搜索设置等。支持 Opt-Out。

限制

 TypesenseAlgoliaElasticSearchMeilisearch
文档数量无限制,只会被可用 RAM 约束未知无限制,只会被可用磁盘空间约束无限制,只会被可用磁盘空间约束,性能则受可用 RAM 约束。
索引最大数量无限制无限制无限制Linux/MacOS 中为 200,Windows 中为 20
最大索引容量无限制,只会被可用 RAM 约束128 GB无限制500GB
每个字段最大单词数无限制无限制无限制无限制
记录最大容量无限制10KB无限制2GB
API Key 数量无限制5000无限制无限制

支持

 TypesenseAlgoliaElasticSearchMeilisearch
频道GitHub issues
Email
Public Slack Community
Phone
Private Slack
Paid Prioritized Support
GitHub issues
Email
Public Slack Community
Phone
Paid Prioritized Support
GitHub issues
Email
Public Slack Community
Paid Prioritized Support
GitHub issues
Email
Public Discord Community
支持时间24 x 7 x 365
付费优先支持
周一 - 周五; 上班时间
用户时区 9am - 5pm
付费优先支持
24 x 7 x 365
白金级和企业优先支持
8am - 10pm (巴黎时间),
周一 - 周四
企业客户
Expert Onboarding & Training