Meilisearch v0.25.0stable Released Jan 11, 2022
โš ๏ธ Breaking Change Impact Score: 7/10

Meilisearch v0.25.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: meilisearch ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • Breaking changes ### API Key management
  • It also involves breaking changes to how keys are handled currently:
  • Other breaking changes - Creating, updating, and deleting indexes are now asynchronous operations. This removes potential race conditions that existed before. @MarinPostma
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Meilisearch v0.25.0. Source highlight: This version of MeiliSearch introduces a much-requested feature: API key management.

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (3)

  • Breaking changes ### API Key management
  • It also involves breaking changes to how keys are handled currently:
  • Other breaking changes - Creating, updating, and deleting indexes are now asynchronous operations. This removes potential race conditions that existed before. @MarinPostma

โœจ New Features & Capabilities (6)

  • If you want to use the dump feature, please use v0.25.1 and later instead of v0.25.0
  • Added management of API Keys via the endpoint `/keys` for the master-key holder.
  • The `task_not_found` error has been introduced.
  • A `details` object is added to contain specific information related to a `task` payload. This was previously displayed in the `type` object.
  • An `indexUid` field is added containing the name of the index where the task is performed.
  • Add MeiliSearch ARM image for Docker (#1897) @curquiza

โšก Performance & Enhancements (5)

  • `matches` now works with numerical values (#1893) @Thearas
  • New errors: `missing_parameter`, `invalid_api_key_description`, `invalid_api_key_actions`, `invalid_api_key_indexes`, `invalid_api_key_expires_at`, `api_key_not_found`.
  • Improve error messages on filter parsing (https://github.com/meilisearch/milli/pull/400) @irevoire
  • Improve Hangul Tokenization (https://github.com/meilisearch/tokenizer/pull/60) @datamaker
  • Improve tokenization: get size of char after normalization (https://github.com/meilisearch/tokenizer/pull/59) @Samyak2

๐Ÿ”ง Bug Fixes & Patches (5)

  • Accept charset in the Content-Type header (#1933) @Kerollmops
  • Fix phrase search that does not match documents as expected (https://github.com/meilisearch/milli/pull/419) @ManyTheFish
  • Fix indexes being deleted when `data.ms` is not compatible with a MeiliSearch version (https://github.com/meilisearch/MeiliSearch/pull/1965) @irevoire
  • Fix Snapshot file permissions (https://github.com/meilisearch/MeiliSearch/pull/1960) @MarinPostma
  • Fix download-latest.sh (https://github.com/meilisearch/MeiliSearch/pull/1976) @Mcdostone
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
This version of MeiliSearch introduces a much-requested feature: API key management. For more information on how to update to the latest version of MeiliSearch, read our [dedicated guide](https://docs.meilisearch.com/create/how_to/updating.html#update-to-the-latest-meilisearch-version). โš ๏ธ Warnings - If you are using filtering, please use v0.25.2 and later instead of v0.25.0 - If you want to use the dump feature, please use v0.25.1 and later instead of v0.25.0 - We are a little bit late regarding the update of our clients with this version. Ensure the package you are using works with v0.25.0 (information available on the README of each package). Sorry for this. # Breaking changes ### API Key management This new feature allows you to manage and restrict the access of API Keys. Check out our [Security and permissions guide](https://docs.meilisearch.com/reference/features/security.html). It also involves breaking changes to how keys are handled currently: - `public` and `private` keys do not exist anymore and are replaced by two default API Keys: `Default Search API Key` and `Default Admin API Key`. They are automatically generated when you first launch MeiliSearch with a `master-key`. ๐Ÿšจ If you are upgrading from a version prior to `v0.25.0`, you will need to update your code to replace the previous `public` and `private` API keys with the newly generated keys to communicate with MeiliSearch. - Before, the `public` key could search and get documents, now the `Default Search API Key` that replaces it can only be used for searching. - The `X-MEILI-API-KEY` header is replaced by the `Authorization: Bearer <apiKey>` header. - API Key object lists are now returned in a `results` array. - Added management of API Keys via the endpoint `/keys` for the master-key holder. - Keys can be created/updated/deleted/listed and fetched. - Keys can be restricted to certain actions on specific indexes. - Keys can expire at a defined time. @ManyTheFish ### Task API To improve user understanding and experience, we refashioned MeiliSearch's asynchronous updates: - The `update` resource has been renamed to `task`. The names of existing API routes have also been updated to reflect this change. - `GET - /indexes/:indexUid/updates` and `GET - /indexes/:indexUid/updates/:updateId` are updated to `/indexes/:indexUid/tasks` and `/indexes/:indexUid/tasks/:taskUid`. - Tasks are accessible as a resource independent of index - `GET - /tasks` - `GET - /tasks/:taskUid` - The task `uid` is incremented globally and not by index. - The `task_not_found` error has been introduced. - The format of the `task` object has been updated. - `updateId` is now `uid`. - `status` values are updated. Possible values are: `enqueued`, `processing`, `succeeded`, `failed`. - `type` is no longer an object. It is now a string containing the values previously held in the now-outdated `type.name` field. - The `type` field values have been updated to be more clear and consistent with our naming rules. Possible values are: `indexCreation`, `indexUpdate`, `indexDeletion`, `documentsAddition`, `documentsPartial`, `documentsDeletion`, `settingsUpdate`, `clearAll`. - A `details` object is added to contain specific information related to a `task` payload. This was previously displayed in the `type` object. - An `indexUid` field is added containing the name of the index where the task is performed. - `startedProcessingAt` is updated to `startedAt`. - `processedAt` is updated to `finishedAt`. - `duration`, `startedAt`, and `processedAt` now use`ISO 8601` format. - `202 Accepted` responses previously returning an `updateId` now return a summarized `task` object. - The `MEILI_MAX_UDB_SIZE` environment variable is renamed to `MEILI_MAX_TASK_DB_SIZE`. - The `--max-udb-size` CLI option is renamed to `--max-task-db-size`. - `task` object lists are now returned under a `results` array with the most recent `task` object displayed first. @MarinPostma, @irevoire More about [asynchronous tasks](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html#which-operations-are-async). Also check out the [task API references](https://docs.meilisearch.com/reference/api/tasks.html). ### Other breaking changes - Creating, updating, and deleting indexes are now asynchronous operations. This removes potential race conditions that existed before. @MarinPostma - MeiliSearch v0.25 and subsequent releases are not compatible with dumps created prior to v0.22. - To migrate a dump from pre-v0.22 to v0.25 MeiliSearch, first load your dump into v0.24.0, create a dump using v0.24.0, and then import this dump into v0.25.0. - Revert change from v0.24.0: the Docker image does not run using the `meili` user, but the `root` again. It means, by default the `data.ms` is now `/` (as for v0.23.1 and before) and not `home/meili` (as for v0.24.0). We had some issues regarding this, see https://github.com/meilisearch/MeiliSearch/issues/1969. @ManyTheFish # Improvements - `matches` now works with numerical values (#1893) @Thearas - New errors: `missing_parameter`, `invalid_api_key_description`, `invalid_api_key_actions`, `invalid_api_key_indexes`, `invalid_api_key_expires_at`, `api_key_not_found`. - Add MeiliSearch ARM image for Docker (#1897) @curquiza - Improve error messages on filter parsing (https://github.com/meilisearch/milli/pull/400) @irevoire - Improve Hangul Tokenization (https://github.com/meilisearch/tokenizer/pull/60) @datamaker - Improve tokenization: get size of char after normalization (https://github.com/meilisearch/tokenizer/pull/59) @Samyak2 # Fixes - Accept charset in the Content-Type header (#1933) @Kerollmops - Fix phrase search that does not match documents as expected (https://github.com/meilisearch/milli/pull/419) @ManyTheFish - Fix indexes being deleted when `data.ms` is not compatible with a MeiliSearch version (https://github.com/meilisearch/MeiliSearch/pull/1965) @irevoire - Fix Snapshot file permissions (https://github.com/meilisearch/MeiliSearch/pull/1960) @MarinPostma - Fix download-latest.sh (https://github.com/meilisearch/MeiliSearch/pull/1976) @Mcdostone # Misc - Remove email address from the launch message (#1896) @curquiza - Remove release drafter workflow (#1882) @curquiza - Remove Hacktoberfest section from CONTRIBUTING.md (#1884) @meili-bot - Telemetry changes (#1938, #1939, #1941, #1942, #1947) @irevoire ---- โค๏ธ Thanks again to our external contributors: - [MeiliSearch](https://github.com/meilisearch/MeiliSearch): @Mcdostone and @Thearas - [Tokenizer](https://github.com/meilisearch/tokenizer): @datamaker and @Samyak2