In this new version of Meilisearch, we focused on improving our error handler and reviewing our data collection policy—but don't worry, we still managed to squeeze in quite a few quality-of-life updates. We'll go through the most important bits here, but you can check out the full changelog on our GitHub release page.

Breaking change: Improved error handling

Our revamp of the error handler started with minor changes to field and value names: errorCode, errorType, and errorLink have been shortened to code, type, and link respectively, and the three possible values for type have been shortened to invalid_request, internal, and auth.

    "message": "authorization header is missing",
    "code": "missing_authorization_header",
    "type": "auth",
    "link": ""

In a related change, the update response in case of an error has been altered.

    "status": "failed",
    "updateId": 1,
    // ...
    "error": {
	    "message": "Document `:documentId` not found.",
    	"code": "document_not_found",
    	"type": "invalid_request",
    	"link": ""

Instead of being located directly in the body, error fields are now located in a nested error object.

Most importantly, we added new error codes and changed some old ones to make resolving errors faster and more intuitive. Take a look at our release changelog for a more detailed list of updates.

Breaking change: attributesToHighlight now works on numeric values

When you use the attributesToHighlight search parameter in your query, returned documents will include a _formatted object containing matching query terms wrapped in <em> tags.

Starting with v0.24, attributesToHighlight works with both strings and numeric values. This means numbers inside _formatted will be automatically converted to strings:

curl \
  -X POST 'http://localhost:7700/indexes/games/search' \
  -H 'Content-Type: application/json' \
  --data-binary '{ "q": "101", "attributesToHighlight": ["id, title, description"] }'
  "id": 101,
  "title": " The Wonderful 101: Remastered",
  "description": "Lead an army of 101 Wonderful Ones from around the world in this Unite Action game!",
  "_formatted": {
      "id": "<em>101</em>",
      "title": " The Wonderful <em>101</em>: Remastered",
      "description": "Lead an army of <em>101</em> Wonderful Ones from around the world in this Unite Action game!"

Telemetry page update

By default, we collect usage data from all Meilisearch instances that do not explicitly opt out.  A few releases ago, we added an article to our documentation website describing why and how we collect usage data from Meilisearch instances. With v0.24, we have expanded that article to include an exhaustive list of all the collected data points.

As part of this renewed commitment to data transparency, we have also put in place a process for users to request the deletion of their collected data. Simply drop us a message at including your instance's UID and we'll remove everything from our records, no questions asked.

Privacy is a difficult subject in tech and there is no shortage of companies who repeatedly violate it out of carelessness or because they stand to profit from unethical data harvesting. We hope to speak more about this in an upcoming blog post, but the important thing to know is that we believe honest and constant communication about these issues is the only way to ensure your data is safe and properly handled. If at any time you feel something looks odd or suspicious, you can use the address to contact us and hold us accountable.

Other changes

  • Performance improvements related to the `attribute` ranking rule
  • Maximum attribute size increased from 1000 to 65535 positions
  • Fixed erroneous CSV Content-Type error message
  • Improved error handling when importing an empty dump
  • Fixed indexation performance when using mounted disks


Not going to lie, this is our favourite part of the release blog post: thanking everyone who has dedicated their time to improving Meilisearch. You're all wonderful 🤩

This month, we'd like to give a special shout out to @Jhnbrn90, @nav1s, @nfsec, @patrickdung, @sanders41, @CNLHC, @fumblehool, and @palfrey.

That's it for this release. If you want more details on updates we didn't have the time to mention here, do check out our release changelog.

See you next month for v0.25!