发布日期: 2026-05-18
版本号: v1.44.0

Meilisearch v1.44.0版本带来了远程联合分面搜索、索引性能优化等多项改进与问题修复,同时也包含若干需要注意的破坏性变更。主要更新包括:当启用网络分片功能时,分面搜索默认改为远程联合模式,会从网络中所有分片获取并合并结果;外部REST嵌入器的调用超时现在与索引中定义的searchCutOffMs参数绑定。改进方面,新版本支持跨网络分片进行分面搜索,降低了索引过程中的内存占用,优化了GeoJSON数据的索引性能,并在统计接口中新增了更易读的数据库大小格式及内部数据库详情展示。此外,修复了网络中设置变更同步、聊天路由在特定条件下失败以及防止网络配置修改时意外重命名远程节点等问题。

更新内容 (中文)

Meilisearch v1.44.0 新增了远程联合分面搜索、索引性能改进以及其他改进和错误修复。它还包含几个破坏性变更,详细说明如下。

破坏性变更

  • 当使用 network 实验性功能并启用分片(网络配置中 leader 不为 null)时,POST /indexes/{indexUid}/facet-search 调用现在默认执行远程联合分面搜索,从网络中所有分片获取并合并结果。
  • 调用外部 REST 嵌入器的超时时间现在与索引中定义的 searchCutOffMs 绑定,而非固定值。

🌈 改进

远程分面搜索

Meilisearch 现在能够通过现有的专用分面搜索路由,在网络的所有分片上进行分面搜索。

  • 如果您使用 network 实验性功能并为网络定义了 leader,则调用 POST /indexes/{indexUid}/facet-search现在默认进行远程调用
  • 可以通过 分面搜索对象 的新 useNetwork 参数显式控制此行为。

由 @dureuill 在 https://github.com/meilisearch/meilisearch/pull/6375 提交

降低索引内存使用量

减少计算前缀时分配的内存,并加速某些操作以避免不必要的反序列化。 如果引擎在后处理期间仍然出现高内存使用情况,建议使用 --experimental-reduce-indexing-memory-usage 选项。

由 @Kerollmops 在 https://github.com/meilisearch/meilisearch/pull/6334 提交

提升 GeoJSON 索引性能

此 PR 将 cellulite 库升级到包含 GeoJSON 索引优化的版本。通过此更改,GeoJSON 索引避免了重新处理已在密集单元中索引的文档,仅在递归单元树中增量处理新增文档。

由 @YoEight 在 https://github.com/meilisearch/meilisearch/pull/6374 提交

统计信息中的人类可读大小格式和详细数据库大小

GET /indexes/{indexUid}/statsGET /stats 添加了两个新的查询参数:

  • showInternalDatabaseSizes:布尔值,可选,默认为 false。存在时,统计路由响应中的索引统计对象现在包含额外的 internalDatabaseSizes 键,其值是内部数据库名称及其在索引中当前大小的字典,类似于批处理的统计对象。
  • sizeFormathumanraw:可选,默认为 raw。存在且设置为 human 时,统计路由响应中的所有数据库大小将作为包含适当单位(MiB、GiB 等)的字符串返回。缺失或设置为 raw 时,则保留当前以字节数表示大小的行为。

集成说明:internalDatabaseSizes 中的键可能会发生变化,不应作为强类型对象暴露。这与批处理统计中现有的 internalDatabaseSizes 相同。

向索引统计添加 `showInternalDatabaseSizes` ```jsonc // curl -X GET \"http://localhost:7700/indexes/movies/stats?showInternalDatabaseSizes=true\" { \"numberOfDocuments\": 31944, \"rawDocumentDbSize\": 20594688, \"avgDocumentSize\": 636, \"isIndexing\": false, \"internalDatabaseSizes\": { \"wordPairProximityDocids\": 100827136, \"documents\": 20594688, \"wordPositionDocids\": 18694144, \"wordFidDocids\": 10715136, \"wordPrefixPositionDocids\": 10256384, \"wordDocids\": 9453568, \"wordPrefixFidDocids\": 4603904, \"wordPrefixDocids\": 3424256, \"main\": 1425408, \"externalDocumentsIds\": 999424, \"fieldIdWordCountDocids\": 245760, \"exactWordPrefixDocids\": 16384, \"celluliteMetadata\": 16384 }, \"numberOfEmbeddings\": 0, \"numberOfEmbeddedDocuments\": 0, \"fieldDistribution\": { \"genres\": 31944, \"id\": 31944, \"overview\": 31944, \"poster\": 31944, \"release_date\": 31944, \"title\": 31944 } } ```
向全局统计添加 `showInternalDatabaseSizes` 和 `sizeFormat=human` ```jsonc // curl -X GET \"http://localhost:7700/stats?showInternalDatabaseSizes=true&sizeFormat=human\" { \"databaseSize\": \"351.38 MiB\", \"usedDatabaseSize\": \"350.64 MiB\", \"lastUpdate\": \"2026-04-16T13:07:02.74243Z\", \"indexes\": { \"comics\": { \"numberOfDocuments\": 31944, \"rawDocumentDbSize\": \"23.14 MiB\", \"avgDocumentSize\": \"751 B\", \"isIndexing\": false, \"internalDatabaseSizes\": { \"wordPairProximityDocids\": \"98.06 MiB\", \"documents\": \"23.14 MiB\", \"wordPositionDocids\": \"17.22 MiB\", \"wordFidDocids\": \"10.36 MiB\", \"wordPrefixPositionDocids\": \"9.47 MiB\", \"wordDocids\": \"8.97 MiB\", \"wordPrefixFidDocids\": \"4.36 MiB\", \"wordPrefixDocids\": \"3.27 MiB\", \"main\": \"1.36 MiB\", \"externalDocumentsIds\": \"944 KiB\", \"fieldIdWordCountDocids\": \"240 KiB\", \"exactWordPrefixDocids\": \"16 KiB\", \"celluliteMetadata\": \"16 KiB\" }, \"numberOfEmbeddings\": 0, \"numberOfEmbeddedDocuments\": 0, \"fieldDistribution\": { \"genres\": 31944, \"id\": 31944, \"overview\": 31944, \"poster\": 31944, \"release_date\": 31944, \"title\": 31944 } }, \"movies\": { \"numberOfDocuments\": 31944, \"rawDocumentDbSize\": \"19.64 MiB\", \"avgDocumentSize\": \"636 B\", \"isIndexing\": false, \"internalDatabaseSizes\": { \"wordPairProximityDocids\": \"96.16 MiB\", \"documents\": \"19.64 MiB\", \"wordPositionDocids\": \"17.83 MiB\", \"wordFidDocids\": \"10.22 MiB\", \"wordPrefixPositionDocids\": \"9.78 MiB\", \"wordDocids\": \"9.02 MiB\", \"wordPrefixFidDocids\": \"4.39 MiB\", \"wordPrefixDocids\": \"3.27 MiB\", \"main\": \"1.36 MiB\", \"externalDocumentsIds\": \"976 KiB\", \"fieldIdWordCountDocids\": \"240 KiB\", \"exactWordPrefixDocids\": \"16 KiB\", \"celluliteMetadata\": \"16 KiB\" }, \"numberOfEmbeddings\": 0, \"numberOfEmbeddedDocuments\": 0, \"fieldDistribution\": { \"genres\": 31944, \"id\": 31944, \"overview\": 31944, \"poster\": 31944, \"release_date\": 31944, \"title\": 31944 } } } } ```
不带任何参数的调用与以前版本相同。 ```jsonc // curl -X GET \"http://localhost:7700/stats\" { \"databaseSize\": 368443392, \"usedDatabaseSize\": 367673344, \"lastUpdate\": \"2026-04-16T13:07:02.74243Z\", \"indexes\": { \"comics\": { \"numberOfDocuments\": 31944, \"rawDocumentDbSize\": 24264704, \"avgDocumentSize\": 751, \"isIndexing\": false, \"numberOfEmbeddings\": 0, \"numberOfEmbeddedDocuments\": 0, \"fieldDistribution\": { \"genres\": 31944, \"id\": 31944, \"overview\": 31944, \"poster\": 31944, \"release_date\": 31944, \"title\": 31944 } }, \"movies\": { \"numberOfDocuments\": 31944, \"rawDocumentDbSize\": 20594688, \"avgDocumentSize\": 636, \"isIndexing\": false, \"numberOfEmbeddings\": 0, \"numberOfEmbeddedDocuments\": 0, \"fieldDistribution\": { \"genres\": 31944, \"id\": 31944, \"overview\": 31944, \"poster\": 31944, \"release_date\": 31944, \"title\": 31944 } } } } ```

由 @dureuill 在 https://github.com/meilisearch/meilisearch/pull/6338 提交

🦋 修复

🔩 其他变更

新贡献者

完整变更日志:https://github.com/meilisearch/meilisearch/compare/v1.43.1…v1.44.0

更新内容 (原始)

Meilisearch v1.44.0 adds remote federated facet search, indexing performance improvements, and other improvements and bugfixes. It also contains a couple of breaking changes, detailed below.

Breaking changes

  • When using the network experimental feature, with sharding enabled (leader is not null in the network configuration), POST /indexes/{indexUid}/facet-search calls now default to a remote federated facet search, fetching and merging results from all shards in the network.
  • The timeout for calling an external REST embedder at search time is now tied to the searchCutOffMs defined in the index, rather than fixed.

🌈 Improvements

Meilisearch now has the ability to search across all shards of a network during facet search via the existing dedicated facet search route.

  • If you are using the network experimental feature and have a leader defined for your network, remote calls are now the default for calls to POST /indexes/{indexUid}/facet-search
  • The behavior can be controlled explicitly via the new useNetwork parameter of the facet search object.

By @dureuill in https://github.com/meilisearch/meilisearch/pull/6375

Reduce memory usage of the indexing

Reduces allocated memory when computing prefixes and speeds up some operations to avoid unnecessary deserialization.

If you still see high memory usage while the engine is post-processing, we recommend using the --experimental-reduce-indexing-memory-usage option.

By @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6334

Improve GeoJSON indexing performance

This PR upgrades the cellulite library to a version that includes a GeoJSON indexing optimization. With this change, GeoJSON indexing avoids reprocessing documents that were already indexed in dense cells, and only handles newly added documents incrementally as they descend through the recursive cell tree.

By @YoEight in https://github.com/meilisearch/meilisearch/pull/6374

Human-formatted sizes and detailed DB sizes in stats

Adds two new query parameters to GET /indexes/{indexUid}/stats and GET /stats:

  • showInternalDatabaseSizes: boolean, optional, defaults to false. When present, the index stat objects in responses of the stat routes now contain an additional internalDatabaseSizes key, whose value is a dictionary of the internal database names and their current size in the index, like in the stats object of a batch.
  • sizeFormat: human or raw: optional, defaults to raw. When present and set to human, then all database sizes in responses of the stat routes will be returned as a string containing an appropriate unit (MiB, GiB, etc). When missing or set to raw, then the current behavior of expressing the size in bytes as a number is retained.

Note for integrations: The keys in internalDatabaseSizes are subject to change and should not be exposed as a strongly typed object. This is the same as the existing internalDatabaseSizes in batch stats.

Adding showInternalDatabaseSizes to an index stats

// curl -X GET "http://localhost:7700/indexes/movies/stats?showInternalDatabaseSizes=true"
{
  "numberOfDocuments": 31944,
  "rawDocumentDbSize": 20594688,
  "avgDocumentSize": 636,
  "isIndexing": false,
  "internalDatabaseSizes": {
    "wordPairProximityDocids": 100827136,
    "documents": 20594688,
    "wordPositionDocids": 18694144,
    "wordFidDocids": 10715136,
    "wordPrefixPositionDocids": 10256384,
    "wordDocids": 9453568,
    "wordPrefixFidDocids": 4603904,
    "wordPrefixDocids": 3424256,
    "main": 1425408,
    "externalDocumentsIds": 999424,
    "fieldIdWordCountDocids": 245760,
    "exactWordPrefixDocids": 16384,
    "celluliteMetadata": 16384
  },
  "numberOfEmbeddings": 0,
  "numberOfEmbeddedDocuments": 0,
  "fieldDistribution": {
    "genres": 31944,
    "id": 31944,
    "overview": 31944,
    "poster": 31944,
    "release_date": 31944,
    "title": 31944
  }
}

Adding showInternalDatabaseSizes and sizeFormat=human to global stats

// curl -X GET "http://localhost:7700/stats?showInternalDatabaseSizes=true&sizeFormat=human"
{
  "databaseSize": "351.38 MiB",
  "usedDatabaseSize": "350.64 MiB",
  "lastUpdate": "2026-04-16T13:07:02.74243Z",
  "indexes": {
    "comics": {
      "numberOfDocuments": 31944,
      "rawDocumentDbSize": "23.14 MiB",
      "avgDocumentSize": "751 B",
      "isIndexing": false,
      "internalDatabaseSizes": {
        "wordPairProximityDocids": "98.06 MiB",
        "documents": "23.14 MiB",
        "wordPositionDocids": "17.22 MiB",
        "wordFidDocids": "10.36 MiB",
        "wordPrefixPositionDocids": "9.47 MiB",
        "wordDocids": "8.97 MiB",
        "wordPrefixFidDocids": "4.36 MiB",
        "wordPrefixDocids": "3.27 MiB",
        "main": "1.36 MiB",
        "externalDocumentsIds": "944 KiB",
        "fieldIdWordCountDocids": "240 KiB",
        "exactWordPrefixDocids": "16 KiB",
        "celluliteMetadata": "16 KiB"
      },
      "numberOfEmbeddings": 0,
      "numberOfEmbeddedDocuments": 0,
      "fieldDistribution": {
        "genres": 31944,
        "id": 31944,
        "overview": 31944,
        "poster": 31944,
        "release_date": 31944,
        "title": 31944
      }
    },
    "movies": {
      "numberOfDocuments": 31944,
      "rawDocumentDbSize": "19.64 MiB",
      "avgDocumentSize": "636 B",
      "isIndexing": false,
      "internalDatabaseSizes": {
        "wordPairProximityDocids": "96.16 MiB",
        "documents": "19.64 MiB",
        "wordPositionDocids": "17.83 MiB",
        "wordFidDocids": "10.22 MiB",
        "wordPrefixPositionDocids": "9.78 MiB",
        "wordDocids": "9.02 MiB",
        "wordPrefixFidDocids": "4.39 MiB",
        "wordPrefixDocids": "3.27 MiB",
        "main": "1.36 MiB",
        "externalDocumentsIds": "976 KiB",
        "fieldIdWordCountDocids": "240 KiB",
        "exactWordPrefixDocids": "16 KiB",
        "celluliteMetadata": "16 KiB"
      },
      "numberOfEmbeddings": 0,
      "numberOfEmbeddedDocuments": 0,
      "fieldDistribution": {
        "genres": 31944,
        "id": 31944,
        "overview": 31944,
        "poster": 31944,
        "release_date": 31944,
        "title": 31944
      }
    }
  }
}

The call without any parameters is the same as in previous versions.

// curl -X GET "http://localhost:7700/stats"
{
  "databaseSize": 368443392,
  "usedDatabaseSize": 367673344,
  "lastUpdate": "2026-04-16T13:07:02.74243Z",
  "indexes": {
    "comics": {
      "numberOfDocuments": 31944,
      "rawDocumentDbSize": 24264704,
      "avgDocumentSize": 751,
      "isIndexing": false,
      "numberOfEmbeddings": 0,
      "numberOfEmbeddedDocuments": 0,
      "fieldDistribution": {
        "genres": 31944,
        "id": 31944,
        "overview": 31944,
        "poster": 31944,
        "release_date": 31944,
        "title": 31944
      }
    },
    "movies": {
      "numberOfDocuments": 31944,
      "rawDocumentDbSize": 20594688,
      "avgDocumentSize": 636,
      "isIndexing": false,
      "numberOfEmbeddings": 0,
      "numberOfEmbeddedDocuments": 0,
      "fieldDistribution": {
        "genres": 31944,
        "id": 31944,
        "overview": 31944,
        "poster": 31944,
        "release_date": 31944,
        "title": 31944
      }
    }
  }
}

By @dureuill in https://github.com/meilisearch/meilisearch/pull/6338

🦋 Fixes

🔩 Miscellaneous changes

New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.43.1...v1.44.0

下载链接