AI 驱动的混合搜索正在进行封闭测试。 加入等候名单 以获得抢先体验!

前往主页Meilisearch 的标志
返回文章
2022 年 11 月 28 日

v0.30 版本的新功能

此版本为您带来了用于零停机部署的索引交换、用于浏览搜索结果的编号分页,并添加了新的任务管理功能。

Carolina Ferreira
Carolina FerreiraMeilisearch 的开发者倡导者@CarolainFG
What's new in v0.30

在本文中,让我们看一下 Meilisearch 最新更新中的一些最重要更改。 您可以在 GitHub 上阅读完整的变更日志,但我们将在本文中介绍主要的更改。

零停机索引部署

将您的数据库更改与您的 Meilisearch 索引同步会导致停机。 您无法承受“损坏”的搜索:用户体验至关重要。 您已经提出了一些解决方法,但这需要时间和资源。 肯定有一种更简单的方法来处理这个问题,对吗?

v0.30 引入了索引交换。 您现在可以部署新版本的索引,而不会停机!

要同步您的主数据库和您的 Meilisearch 索引 —indexA— 在生产环境之间的更改,您只需要执行以下步骤

  • 步骤 1:创建一个新版本的索引 —indexA_new— 包含所有这些更改
  • 步骤 2:交换索引,这意味着您将 indexA 的文档、设置和任务历史记录替换为 indexA_new 的文档、设置和任务历史记录。 这是您需要发送以实现神奇效果的请求
curl 
  -X POST 'https://127.0.0.1:7700/swap-indexes'
  -H 'Content-Type: application/json' 
  --data-binary '[
      { "indexes": ["indexA", "indexA_new"] }
  ]'

⏲️ 等待任务状态更新为 succeeded...

🎉 哒哒! 您的更改现已投入生产! 您的用户仍然在 indexA 中进行搜索,但它现在包含 indexA_new 的数据,而 indexA_new 现在包含 indexA 的数据。

新功能:任务取消和删除

v0.30 让您可以更好地控制异步操作:您现在可以取消任务并删除您的任务历史记录。

任务取消

无法取消任务一直是用户长期以来提出的反复出现的问题之一。 无法中断错误入队或处理时间过长的任务可能会让人感到非常沮丧。

使用 v0.30,这个问题现在已成为过去。 使用新的 API 路由 /tasks/cancel,您可以根据以下条件取消排队或正在处理的任务

  • uid
  • 状态
  • 类型
  • indexUid
  • 它们入队或开始的日期(beforeEnqueuedAtafterEnqueuedAtbeforeStartedAtafterStartedAt

您可以在我们的文档中了解有关任务的更多信息。

要取消所有将文档添加到索引或更新文档的入队任务,您应该发送以下请求

curl 
  -X POST 'https://127.0.0.1:7700/tasks/cancel?statuses=enqueued&types=documentAdditionOrUpdate’

任务删除

成功或失败 — 现在已取消 — 任务信息可能会占用具有大量异步操作的实例中急需的磁盘空间。 使用新的 DELETE /tasks 端点清理已完成的任务。

就像取消任务一样,任务删除可以基于任务的以下条件完成

  • uid
  • 状态
  • 类型
  • indexUid
  • 它们入队或开始的日期(beforeEnqueuedAtafterEnqueuedAtbeforeStartedAtafterStartedAt

但您也可以根据它们完成处理的日期以及取消它们的任务来删除它们

  • beforeFinishedAt
  • afterFinishedAt
  • canceledBy

以下请求将删除 2020 年 10 月 11 日上午 11:49:53 之前处理的所有任务。

curl 
  -X DELETE 'https://127.0.0.1:7700/tasks?beforeFinishedAt=2020-10-11T11:49:53.000Z'

新功能:配置文件支持

感谢我们亲爱的贡献者 mlemesle,一种配置 Meilisearch 实例的新方法已进入聊天。 除了环境变量和 CLI 选项之外,您还可以使用配置文件 🥳

配置文件可以轻松共享和版本化。 它们允许您在一个地方管理所有配置选项,并一目了然地查看整体视图。

为此,请在单个 .toml 文件中设置所需的实例选项

env = "production"
master_key = "YOUR_MASTER_KEY_VALUE"

您可以使用 --config-file-path CLI 选项或 MEILI_CONFIG_FILE_PATH 环境变量来指定配置文件。 否则,Meilisearch 将使用工作目录中的文件 ./config.toml 作为默认配置文件。 您可以使用以下命令下载默认配置文件

curl https://raw.githubusercontent.com/meilisearch/meilisearch/main/config.toml > config.toml

请注意,在配置文件中指定 config-file-path 键将引发错误。

如果未提供配置文件,则 Config file path 设置为 none

改进:搜索结果分页

v0.30 为需要分页界面的用户引入了编号分页模式。

在 v0.29 之前,当使用搜索端点时,Meilisearch 仅返回 estimatedTotalHits,这是与查询匹配的文档数量的估计值。 因此,不建议创建带有页面选择器的界面。

您现在可以使用新的搜索参数 pagehitsPerPage 来获取查询的精确命中数和总页数。

curl 
  -X POST 'https://127.0.0.1:7700/indexes/movies/search' 
  -H 'Content-Type: application/json' 
  --data-binary '{ "q": "american ninja", "page": 1 }'

上面的请求将提取给定查询的第一页结果,并将返回以下响应

{
  "hits": [
        // … 20 hits
    ],
  "query": "american ninja",
  "processingTimeMs": 2,
  "hitsPerPage": 20,
  "page": 1,
  "totalPages": 49,
  "totalHits": 966
}

如您所见,它返回精确的搜索结果数 (totalHits) 和搜索结果页数 (totalPages),这使您可以轻松创建编号的分页界面。

👉 请注意,totalHitstotalPages 是基于pagination.maxTotalHits 索引设置计算的。

重大更改

字段重命名

批量删除文档时,相应的任务对象包含一个字段,其中包含收到的文档 ID 的数量。 此字段以前称为 receivedDocumentIds,现在已重命名为 providedIds

新错误

如果用户尝试在未设置主密钥的情况下访问 /keys 路由,Meilisearch 现在会抛出更有用的错误 missing_master_key

{
    "message": "Meilisearch is running without a master key. To access this API endpoint, you must have set a master key at launch.",
    "code": "missing_master_key",
    "type": "auth",
    "link": "https://docs.meilisearch.com/errors#missing_master_key"
}

任务筛选器和错误命名

为了使命名与它们可以具有的值保持一致,我们已经将用于筛选任务的查询参数复数化

  • indexUid 变为 indexUids
  • type 变为 types
  • status 变为 statuses

我们还重命名了以下错误代码

  • invalid_task_typeinvalid_task_types_filter
  • invalid_task_statusinvalid_task_statuses_filter

Hacktoberfest 贡献

我们非常感谢我们在 Hacktoberfest 期间收到的所有贡献。 上面提到的大多数更改都来自这些贡献,我们想重点介绍另外两个。 如果没有我们的贡献者,我们将不会在此版本中发布它们。

  • 感谢 @mou 对压缩 API 请求(Gzip、Brotli、Zlib)的支持
  • 感谢 @jeertmans 提供 Apple Silicon 二进制文件

其他更改

  • Meilisearch 默认绑定到 127.0.0.1:7700,这是一个 IPv4 地址。为了使 Meilisearch 可以通过 IPv4 (127.0.0.1:7700) 和 IPv6 ([::1]:7700) 地址访问,我们已将默认地址更改为 localhost:7700
  • 所有任务对象现在都包含 canceledByerror 字段
  • 新的任务过滤器可用于 GET /tasks 端点
    • uids
    • beforeEnqueuedAt / afterEnqueuedAt
    • beforeStartedAt / afterStartedAt
    • beforeFinishedAt / afterFinishedAt
    • canceledBy
  • 我们引入了一种新的任务类型:snapshotCreation。快照任务现在在任务列表中可见
  • 索引速度已显著提高
  • 我们减少了 Meilisearch 二进制文件的大小以及 Meilisearch 实例占用的磁盘空间大小
  • 所有实例选项现在都有其对应的环境变量。一些与快照和转储功能相关的环境变量之前缺失了

非常感谢我们所有的贡献者!没有你们的帮助,这个项目不会走这么远 🙏

这就是 v0.30 的全部内容!请记得查看更新日志以获取完整的发行说明。

Meilisearch 1.12

Meilisearch 1.12

Meilisearch 1.12 带来了显著的索引速度提升,并引入了新的 API 来禁用前缀搜索和分面搜索,以及检索任务批次。

Laurent Cazanove
Laurent Cazanove2024 年 12 月 23 日
Meilisearch Q4 2024 release wrap-up

Meilisearch 2024 年第四季度发布总结

Meilisearch 第四季度发布包括更快的搜索速度、在 UI 中对设置的更多控制以及一个新区域。

Maya Shin
Maya Shin2024 年 11 月 27 日
Meilisearch 1.11

Meilisearch 1.11

Meilisearch 1.11 通过关键改进(包括二进制量化)推动 AI 驱动的搜索走向稳定。此版本还根据用户反馈增强了联合搜索功能。

Carolina Ferreira
Carolina Ferreira2024 年 10 月 29 日