在本文中,让我们来看看 Meilisearch 最新更新中的一些最重大变化。您可以查看 完整变更日志

新功能:租户令牌

在软件开发中,多租户意味着多个用户(也称为租户)共享相同的计算资源,但对系统范围数据的访问级别不同。在 Meilisearch 中,您可能拥有一个包含属于许多不同租户的数据的索引。

租户令牌 是包含 安全凭据 和一组 搜索规则 的加密数据的微型数据包。这些搜索规则有效地限制了搜索查询可以返回哪些文档。例如,您可以使用令牌来确保医疗保健应用程序的用户只能搜索他们自己的医疗记录,即使所有记录都存储在同一个索引中。

要开始使用租户令牌,请在应用程序的后端设置令牌生成流程

const currentUserID = 'aUserID';

const searchRules = {
  'patient_medical_records': {
    filter: `user_id = ${currentUserID}`
  }
};

const apiKey = 'yourApiKey';

const expiresAt = new Date('2025-12-20'); // optional

const token = client.generateTenantToken(searchRules, {
  apiKey: apiKey,
  expiresAt: expiresAt,
});

创建租户令牌后,您可以将其发送到最终用户的前端,并使用它查询索引

const frontEndClient = new MeiliSearch({ host: 'http://127.0.0.1:7700', apiKey: token });
frontEndClient.index('patient_medical_records').search('blood test');

您可以在 我们的专用指南 中详细了解多租户以及如何在应用程序中实现租户令牌。

实验性功能:自动批处理

在提高 Meilisearch 的索引性能方面,我们经常建议用户将文档分成批次。但是,找到合适的批次大小可能会带来额外的挑战。一方面,大型批次会占用大量资源;另一方面,小型批次的速度明显较慢。我们知道我们可以做得更好。

在这个版本中,我们引入了一个实验性的自动批处理功能。自动批处理将通过 自动将连续的文档添加在一起进行批处理 来帮助您提高索引速度。

启动 Meilisearch 时,您可以通过传递 --enable-auto-batching 标志来激活自动批处理

./meilisearch --enable-auto-batching

我们非常希望此功能能够使 Meilisearch 的索引更快、更易于使用。您可以在 我们的文档网站 上了解更多关于自动批处理的信息。

我们决定将其作为实验性状态发布,因为此功能可能会被大幅重构。我们需要您的 反馈 来衡量其成功并使其发展。

重大变更:新的转储行为

将转储导入到具有现有数据库的实例中将引发错误,并且 Meilisearch 将无法启动。在 v0.26 之前,导入仅会静默失败,并且没有指示任何错误。

./meilisearch --import-dump path_to_dump_file

如果您的工作流程需要,您可以使用两个新的命令行标志来抑制导入错误:--ignore-dump-if-db-exists--ignore-missing-dump

重大变更:命令行标志行为

从 v0.26 开始,以下实例选项在命令行中使用时不再接受值:-no-analytics--schedule-snapshot--ignore-missing-snapshot--ignore-snapshot-if-db-exists--ssl-require-auth--ssl-resumption--ssl-tickets

# new behavior
meilisearch --no-analytics

# old behavior
meilisearch --no-analytics=true

在使用这些选项作为环境变量时,仍然需要一个值。

其他变化

  • 现在将空 CSV 单元格转换为 null
  • 有效但为空的有效负载在添加和更新文档时不再引发错误
  • armv8 二进制文件已被弃用,取而代之的是 aarch64 二进制文件
  • 改进对包含非 Unicode 字符的搜索的突出显示
  • 改进了 _geoPoint 排序行为

贡献者

非常感谢帮助我们的贡献者!我们要特别感谢 @robjtede@Thearas@Samyak2——我们对你们的努力和慷慨表示感谢。


这就是全部内容!请务必查看 GitHub 上的变更日志 以获取完整的发布说明,我们很快将在 v0.27 中与您见面!