For more information on how to update to the latest version of Meilisearch, read our dedicated guide.
New features
Tenant tokens
We released one of the features most requested by our users: tenant tokens. (#2096) @ManyTheFish
Tenant tokens allow developers to restrict access to documents depending on the end-user making the search request, effectively enabling multi-tenant indexes.
A tenant token is a JWT. It must be generated by combining an API key with a set of permissions and rules the developer wishes to apply to an end user's search.
For more information on tenant tokens, read our dedicated guide.
Auto-batching (experimental)
This version includes the auto-batching feature. (#2005) @MarinPostma
Auto-batching improves indexing speed by batching together consecutive document additions.
Here is a simple way to use it:
meilisearch --enable-auto-batching
This is an experimental feature. Based on user feedback, it might be completely reworked or outright removed in a future release.
You can read more about how to use auto-batching in this discussion.
Breaking changes
- New dump behavior (#2098) @irevoire
Importing a dump into an instance with an existing database using--import-dump
will throw an error on the CLI. Similar to snapshots, the--ignore-dump-if-db-exists
and--ignore-missing-dump
flags have been added for dumps. - New flag behavior for the CLI (#2068) @MarinPostma
Affected options:--no-analytics
,--schedule-snapshot
,--ignore-missing-snapshot
,--ignore-snapshot-if-db-exists
,--ssl-require-auth
,--ssl-resumption
,--ssl-tickets
❌ :meilisearch --no-analytics=true
✅ :meilisearch --no-analytics
- Remove armv8 binary from the release assets. Use aarch64 binary instead. (#2136) @curquiza
Enhancements
- Allow payloads with no documents (#2075) @MarinPostma
- Accept
null
values for numeric fields on CSV upload (meilisearch/milli#445) @MarinPostma - Set Rust edition to 2021 (#2060 and #2067) @MarinPostma
- Update dashboard to fit the new rebranding (#2174) @mdubus
Fixes
- Fix
_geoPoint
sorting (meilisearch/milli#424) @irevoire and his father - Allow API keys to accept
null
descriptions (#2135) @ManyTheFish - Fix search highlight for non-unicode chars (meilisearch/milli#426) @Samyak2
- Fix empty filter behavior (meilisearch/milli#422) @Kerollmops
- Set a limit to filters to avoid stackoverflow issues (meilisearch/milli#421) @Kerollmops
- Fix Docker image to boot on arm64 node (#2122) @Thearas
- Handle escaped characters in filters (meilisearch/milli#427) @irevoire
- Update error message for missing version files (#2095) @irevoire
- Fix multiple dump problem (#2057, #2076, #2074) @irevoire
- Fix for phrase searches with more than two words (meilisearch/milli#442) @MarinPostma
- Fix
too many open file
error during tests (#2011) @MarinPostma - Fix internal error on the stats route with snapshots enabled (#2192) @MarinPostma
- Fix blocking authentication (#2204) @MarinPostma
Misc
- Get rid of chrono in favor of time (#2173) @irevoire
- Update actix-web dependency to 4.0.0 (#2194) @robjtede
- Enhance authorization tests (#2108) @ManyTheFish
- Update ASCII art (#2118) @irevoire
- Update Meilisearch spelling and branding (#2117) @meili-bot
- Update CONTRIBUTING.md (#1908) @ferdi05
- Update LICENSE (#2145) @curquiza
- Update analytics (#2099 and #2086) @irevoire
- Ignore auth tests errors on Windows (#2037) @irevoire
- Rename auto-batching CLI option from
--enable-autobatching
to--enable-auto-batching
#2209 @MarinPostma - Fix blocking authentication #2204 @MarinPostma
- Fix internal error on the stats route with snapshots enabled (#2192) @MarinPostma
- Update actix-web dependency to 4.0 (#2194 and #2197) @robjtede
For more information on how to update to the latest version of Meilisearch, read our dedicated guide.
New features
Tenant tokens
We released one of the features most requested by our users: tenant tokens. (#2096) @ManyTheFish
Tenant tokens allow developers to restrict access to documents depending on the end-user making the search request, effectively enabling multi-tenant indexes.
A tenant token is a JWT. It must be generated by combining an API key with a set of permissions and rules the developer wishes to apply to an end user's search.
Autobatching (experimental)
This version includes the auto-batching feature. (#2005) @MarinPostma
Auto-batching improves indexing speed by batching together consecutive document additions.
Here is a simple way to use it:
meilisearch --enable-autobatching
This is an experimental feature. Based on user feedback, it might be completely reworked or outright removed in a future release.
You can read more about how to use auto-batching in this discussion.
Breaking changes
- New dump behavior (#2098) @irevoire
Importing a dump into an instance with an existing database using--import-dump
will throw an error on the CLI. Similar to snapshots, the--ignore-dump-if-db-exists
and--ignore-missing-dump
flags have been added for dumps. - New flag behavior for the CLI (#2068) @MarinPostma
Affected options:--no-analytics
,--schedule-snapshot
,--ignore-missing-snapshot
,--ignore-snapshot-if-db-exists
,--ssl-require-auth
,--ssl-resumption
,--ssl-tickets
❌ :meilisearch --no-analytics=true
✅ :meilisearch --no-analytics
- Remove armv8 binary from the release assets. Use aarch64 binary instead. (#2136) @curquiza
Enhancements
- Allow payloads with no documents (#2075) @MarinPostma
- Accept
null
values for numeric fields on CSV upload (meilisearch/milli#445) @MarinPostma - Set Rust edition to 2021 (#2060 and #2067) @MarinPostma
Fixes
- Fix
_geoPoint
sorting (meilisearch/milli#424) @irevoire and his father - Allow API keys to accept
null
descriptions (#2135) @ManyTheFish - Fix search highlight for non-unicode chars (meilisearch/milli#426) @Samyak2
- Fix empty filter behavior (meilisearch/milli#422) @Kerollmops
- Set a limit to filters to avoid stackoverflow issues (meilisearch/milli#421) @Kerollmops
- Fix Docker image to boot on arm64 node (#2122) @Thearas
- Handle escaped characters in filters (meilisearch/milli#427) @irevoire
- Update error message for missing version files (#2095) @irevoire
- Fix multiple dump problem (#2057, #2076, #2074) @irevoire
- Fix for phrase searches with more than two words (meilisearch/milli#442) @MarinPostma
- Fix
too many open file
error during tests (#2011) @MarinPostma
Misc
- Update actix-web dependency to 4.0.0-beta.21 (#2101) @robjtede
- Enhance authorization tests (#2108) @ManyTheFish
- Update ASCII art (#2118) @irevoire
- Update Meilisearch spelling and branding (#2117) @meili-bot
- Update CONTRIBUTING.md (#1908) @ferdi05
- Update LICENSE (#2145) @curquiza
- Update analytics (#2099 and #2086) @irevoire
- Ignore auth tests errors on Windows (#2037) @irevoire
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.
- 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.
It also involves breaking changes to how keys are handled currently:
public
andprivate
keys do not exist anymore and are replaced by two default API Keys:Default Search API Key
andDefault Admin API Key
. They are automatically generated when you first launch MeiliSearch with amaster-key
.
🚨 If you are upgrading from a version prior tov0.25.0
, you will need to update your code to replace the previouspublic
andprivate
API keys with the newly generated keys to communicate with MeiliSearch.- Before, the
public
key could search and get documents, now theDefault Search API Key
that replaces it can only be used for searching. - The
X-MEILI-API-KEY
header is replaced by theAuthorization: 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.
Task API
To improve user understanding and experience, we refashioned MeiliSearch's asynchronous updates:
- The
update
resource has been renamed totask
. The names of existing API routes have also been updated to reflect this change. GET - /indexes/:indexUid/updates
andGET - /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 nowuid
.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-outdatedtype.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 atask
payload. This was previously displayed in thetype
object. - An
indexUid
field is added containing the name of the index where the task is performed. startedProcessingAt
is updated tostartedAt
.processedAt
is updated tofinishedAt
.duration
,startedAt
, andprocessedAt
now useISO 8601
format.
202 Accepted
responses previously returning anupdateId
now return a summarizedtask
object.- The
MEILI_MAX_UDB_SIZE
environment variable is renamed toMEILI_MAX_TASK_DB_SIZE
. - The
--max-udb-size
CLI option is renamed to--max-task-db-size
. task
object lists are now returned under aresults
array with the most recenttask
object displayed first.
More about asynchronous tasks. Also check out the task API references.
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 theroot
again. It means, by default thedata.ms
is now/
(as for v0.23.1 and before) and nothome/meili
(as for v0.24.0). We had some issues regarding this, see #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 (meilisearch/milli#400) @irevoire
- Improve Hangul Tokenization (meilisearch/tokenizer#60) @datamaker
- Improve tokenization: get size of char after normalization (meilisearch/tokenizer#59) @Samyak2
Fixes
- Accept charset in the Content-Type header (#1933) @Kerollmops
- Fix phrase search that does not match documents as expected (meilisearch/milli#419) @ManyTheFish
- Fix indexes being deleted when
data.ms
is not compatible with a MeiliSearch version (#1965) @irevoire - Fix Snapshot file permissions (#1960) @MarinPostma
- Fix download-latest.sh (#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
- MeiliSearch: @Mcdostone and @Thearas
- Tokenizer: @datamaker and @Samyak2