使用 MeiliSearch 在 MinIO 上实现全文本搜索

文本数据是一个庞大且不断增长的数据类别,每天都在被生成、存储和分析。不同的应用程序以事件、日志和通知的形式生成文本数据。面对不断增长的物联网和机器生成的文本数据,企业始终在寻找更快、更准确的搜索工具。文本数据的搜索应用很多,它们需要高性能的对象存储来大规模存储和搜索文本。提供快速的文本搜索对于任何团队来说都是一项极具价值的增值服务。
在这篇文章中,我们将学习如何利用 MinIO 和 MeiliSearch 来构建一个大型的存储和搜索平台。首先,我们将设置 MeiliSearch,启用快照,然后使用 MinIO 服务器作为 MeiliSearch 快照的高吞吐量、可扩展存储平台。我们将使用 MinIO 客户端 (mc) 将这些快照存储到 MinIO 中,以便 MeiliSeach 可以从任何时间点恢复。
MeiliSearch 是一个 RESTful 搜索 API 服务器。简单来说,MeiliSearch 允许用户上传任意文本数据,索引数据,并允许对上传的数据集进行闪电般的快速搜索。
MinIO 非常适合作为快照的对象存储,因为它速度快、可扩展且易于安装和管理。MinIO 的体积仅为 100MB,轻量级且高效,因此它既可以轻松地安装在本地以学习和开发新技术,也可以用它来 构建您自己的自助式对象存储平台.
文本搜索平台通常会对数据和索引进行快照,MeiliSearch 也不例外。MinIO 支持移动、复制和版本化快照。在本演示中,我们将使用 镜像 定期将 MeiliSearch 快照移动到 MinIO 上。通过启用 版本控制,MinIO 将确保正确存储快照的多个版本,甚至可以回滚到旧的快照。
先决条件
在学习如何将 MeiliSearch 快照备份到 MinIO 之前,我们需要配置并运行 MinIO 和 MeiliSearch。
安装 MeiliSearch
MeiliSearch 可作为主要操作系统的自包含二进制文件提供。下载并启动 MeiliSearch
# Install MeiliSearch
curl -L https://install.meilisearch.com | sh
# Launch MeiliSearch
./meilisearch --schedule-snapshot=true --snapshot-interval-sec 3600
这样,MeiliSearch 就会启动,并计划每小时在默认快照位置(即 MeiliSearch 根目录内的快照目录)生成快照。
安装 MinIO 和 MinIO 客户端
要将 MeiliSearch 快照备份到 MinIO 服务器,我们将使用 `mc mirror` 命令。您需要一个可用的 MinIO 服务器作为镜像目标。首先,设置 MinIO 服务器。在这篇博文中,我们将使用公开托管的 MinIO Play 服务器作为备份目标。
MinIO 服务器启动并运行后,下载并安装 MinIO 客户端 (mc).
将快照备份到 MinIO
要备份快照,我们将使用一个启用了锁定的版本化 MinIO 存储桶,以便可以根据需要将快照恢复到特定时间点。创建存储桶并启用版本控制
mc mb --with-lock play/meilisearch-snap
mc version enable play/meilisearch-snap
现在,启动一个 `mc mirror` 会话,该会话将在每次在刚刚创建的 MinIO 服务器存储桶中生成 MeiliSearch 快照时进行复制
mc mirror --watch /path/to/meilisearch/snapshots/ play/meilisearch-snap/
请注意,MeiliSearch 快照的名称为 `data.ms.snapshot`。这是我们在备份存储桶中要关注的文件。
从快照恢复 MeiliSearch
如果您想从特定快照恢复 MeiliSearch,可以使用以下方法从 MinIO 服务器下载该快照的版本
mc ls play/meilisearch-snap --versions
mc cp --vid 77decd94-ac3d-409f-8abb-934c7b157f75 play/meilisearch-snap/data.ms.snapshot ./
下载完特定版本的快照后,可以使用以下方法恢复 MeiliSearch
meilisearch --import-snapshot mySnapShots/data.ms.snapshot
这将从快照创建的时间点开始启动 MeiliSearch。
MeiliSearch 和 MinIO 用于快速可靠的文本搜索
瞧!超级简单,极快。
希望我们已经证明了使用 MinIO 和 MeiliSearch 将高度可扩展的对象存储与文本搜索平台配对是多么容易和高效。这种模式对读者来说应该很熟悉。在许多方面,它类似于我们最近关于对象存储上的数据库的文章。最大的收获是,解耦继续向上移动到堆栈,应用程序将存储外包给 S3(在本例中为 MinIO),并专注于查询处理或搜索(计算)。这些系统结合在一起,提供了一种构建最佳的、可扩展的文本搜索平台的绝佳方式。
通过下载 MinIO 和 MeileSearch 开始使用。如果您有任何疑问,请参阅 MinIO 文档 或在我们的 Slack 频道提问。