Skip to content

Update getmeili/meilisearch Docker tag to v1.52.0 - #76

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/getmeili-meilisearch-1.x
Open

Update getmeili/meilisearch Docker tag to v1.52.0#76
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/getmeili-meilisearch-1.x

Conversation

@renovate

@renovate renovate Bot commented Feb 18, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
getmeili/meilisearch minor v1.11.1v1.52.0

Release Notes

meilisearch/meilisearch (getmeili/meilisearch)

v1.52.0: 🐠

Compare Source

✨ Enhancement
  • Introduce the /tasks/stream and /batches/stream SSE routes by @​Kerollmops in #​6533
    This experimental feature allows establishing a live connection to the engine, avoiding the need to implement long polling and instead letting the engine provide new tasks, batches, and batch progress in a push-based manner. Using this route can drastically reduce network load when retrieving the status of a Meilisearch instance.
  • Speed up the search speed a bit more by @​Kerollmops in #​6542
    We improve the search speed when it comes to formatting the documents by making an O(n) operation, where n is the number of retrieved documents, become an O(1) operation. This improvement can significantly increase search speed when requesting a large (> 20) number of documents.
🪲 Bug fixes

v1.51.0: 👽

Compare Source

✨ Enhancement
New filter rule activation condition
Dynamic search rules (DSR) can now declare a new `filter` condition: it contains a single `values` key, whose value is a JSON object.
The keys of this `values` JSON object are the facet names (e.g., `color`, `genres`, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active.

<details>

<summary>Example of sending a DSR with a filter condition</summary>

```jsonc
// PATCH /dynamic-search-rules/test-filter

{
  "conditions": {
    "filter": {
      "values": {
        "color": "red",
        "category": "shirt"
      }
    }
  },
  "actions": [
    {
      "selector": { "id": "red shirt on sales" },
      "action": { "type": "pin", "position": 0 }
    }
  ]
}
```

</details>

<details>
<summary>Example of search query that enables the DSR above</summary>

```jsonc
{
  "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)"
}
```

</details>

Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active.
New lastUpdatedAt field
Dynamic search rules returned by `GET /dynamic-search-rules/{:ruleUid}` and `POST /dynamic-search-rules` contain an additional `lastUpdatedAt` field. 

This field is automatically updated with the `enqueuedAt` value of the last task that modified the rule.
Rules are listed with the most recently updated first
`POST /dynamic-search-rules` now lists rules in descending `lastUpdatedAt` order, meaning that the most recently updated rules will be listed first.
New environment variables
New environment variables are defined to control the behavior of the DSR fuel:

- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL` (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules.
- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL` (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape
- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL` (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape
- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL` (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape
  • Speed up search requests by @​Kerollmops in #​6528
    Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields.

  • Stabilize dumpless upgrade by @​curquiza in #​6486

    ⚠️ Breaking change following the stabilization of an experimental feature ⚠️

    The flag —-experimental-dumpless-upgrade is renamed —-upgrade-db, keeping the exact same behavior.

  • Remove unused experimental features by @​curquiza in #​6489

    ⚠️ Breaking change: removing the following experimental features ⚠️

🪲 Bug fixes
  • Make sure legacy attribute patterns work by @​Kerollmops in #​6531
    • Missing support for the shorthand filterable attributes syntax
🔩 Miscellaneous
New Contributors

v1.50.0: 🐐

Compare Source

Meilisearch v1.50 revamps the Dynamic Search Rules, adds support for federated document fetch in sharded configurations, among other improvements

Breaking changes

This release introduces breaking changes for users using some experimental features

dynamicSearchRules experimental feature
Request type changes
  1. priority has been replaced with precedence, which better reflects the behavior (lower precedence means the rule is applied first)
  2. conditions has been modified from an array to an object with two fields: "query" of type QueryCondition and "time" of time TimeCondition
  3. New type QueryCondition that contains the fields isEmpty (as previously) and words instead of contains (same type)
  4. It is now possible to pass isEmpty: false with words in a QueryCondition. Passing isEmpty:true with words still results in a synchronous error.
  5. New type TimeCondition with fields start and end (unchanged semantics from previous type).
  6. When specifying the selector of an Action, it is now mandatory to specify an id. Previously, it was optional, but the action would never trigger.
  7. When listing rules with POST /dynamic-search-rules, filter.attributePatterns has been replaced with filter.query, an optional string that searches in rule description and conditions.query.words.
  8. When calling DELETE /dynamic-search-rules/{:ruleUid} or PATCH /dynamic-search-rules/{:ruleUid} in a sharded configuration, endpoint will not return a HTTP 400 error if called on a follower remote rather than on the leader.
Response changes
  1. PATCH /dynamic-search-rules/{:ruleUid} and DELETE /dynamic-search-rules/{:ruleUid} now register an asynchronous task..
  2. The response is modified to return the registered task instead of the modified dynamic search rule.
  3. HTTP 404 is no longer returned if the {:ruleUid} portion of the URL refers to a rule that doesn't exist. This is because rules are processed asynchronously, and is consistent with the behavior of DELETE /indexes/{:indexUid}/documents/{:docId} for {:docId}
network experimental feature

The default behavior for users using the network experimental feature with sharding configured (leader not null) will change on the following routes:

  • GET indexes/:uid/documents
  • GET indexes/:uid/documents/:document_id
  • POST indexes/:uid/documents/fetch

Meilisearch will now fetch the documents from all the shards and not only on the local machine when processing the request.
To keep the same behavior as before, users will have to set useNetwork to false when making their request.

🌈 Improvements

Scaling up the Dynamic Search Rules
  • Dynamic search rules scale up to 75K rules without any impact on the search
  • The API of Dynamic Search Rules has been simplified
    • It is harder to send conditions that will result in the rules never activating
  • This also unlocks future improvements such as filter activation conditions for search rules
Additions
  • Add a new DELETE /dynamic-search-rule route that deletes all the DSRs
  • Add the concept of "DSR fuel" that determines how much energy is spent resolving DSR during a search. The fuel is initialized with some default variables that can be overridden using environment variables:
    • MEILI_EXPERIMENTAL_DSR_FUEL_MAX_COUNTED_WORDS: max number of words considered inside of a search query for the purpose of finding conditions.query.words constraints. Defaults to 10, max value is 255
    • MEILI_EXPERIMENTAL_DSR_FUEL_MAX_ACTIVE_RULES: max number of active rules whose actions are evaluated. Defaults to 1000, max value is 4294967
    • MEILI_EXPERIMENTAL_DSR_FUEL_MAX_PIN_ACTIONS: max number of pin actions that are applied. Defaults to 100, max value is 4294967
    • MEILI_EXPERIMENTAL_DSR_FUEL_WORD_FUEL: max number of constraint combinations that are evaluated for the purpose of finding conditions.query.words constraints. Defaults to 4096, max value is 4294967

By @​dureuill in #​6484 and #​6506

Behavior changes
  • The conditions.query.words behaves differently from query.contains: previously, a rule would match if its conditions query.contains would be substrings of q in the search query in the sense of str::contains. Now, a rule matches if all the words in conditions.query.words appear in q (after normalization). For q = hero super, query.contains = super hero would not match, whereas conditions.query.words = super hero does now match. This behavior is more in line with regular search, and allows improving performance.
  • Dynamic search rules are now replicated from the leader to its follower, when in a sharded configuration
Federated document fetch routes

GET indexes/:uid/documents, GET indexes/:uid/documents/:document_id and POST indexes/:uid/documents/fetch will now fetch the documents from all the shards in the configured network.

Moreover, a new useNetwork parameter is available to activate or deactivate the usage of the network.

By @​ManyTheFish in #​6495

Support partial wildcards when requesting facets

The facets parameter in search and federated search now supports more wildcards. Previously, only the single wildcard "*" was supported, requesting all filterable fields.

Now, patterns containing * are supported with the same matching rules as in filterableAttributes.attributePatterns and localizedAttributes.attributePatterns, such as dogs.*, which will add to the facet distribution all filterable fields that match the pattern (such as dogs.intel, dogs.kefir, etc.).

By @​Kerollmops in #​6497

🦋 Fixes

Fix migration from v1.48 and earlier

Migration via --experimental-dumpless-upgrade would fail in some cases in v1.49, when trying to migrate synonyms that contained no words (empty synonyms, or containing only separator tokens such as &).

Such synonyms are now ignored during migration, avoiding the issue.

By @​Kerollmops in #​6501

Fix filter memory consumption in some cases

In some conditions, the memory consumption of filters would increase quadratically with the length of the filter. This is now resolved for these cases.

By @​ManyTheFish in #​6509

No longer reject some correctly-escaped filters

Fix a bug where some filters containing escaped characters (such as \) would cause search requests to fail with invalid_search_filter

By @​dureuill in #​6499

More fault-tolerant S3 snapshots

Potentially fix an issue when sending a request to AWS S3 to create a new multipart upload, ensuring we resend the request if it fails.

By @​Kerollmops in #​6494

🔩 Miscellaneous changes

Full Changelog: meilisearch/meilisearch@v1.49.0...v1.50.0

v1.49.0: 🪺

Compare Source

✨ Enhancement
  • Improve the synonyms storage by @​Kerollmops in #​6466
    We improve synonyms' performance by changing how we store and retrieve them during query processing. Users may have experienced performance issues when the number of synonyms in an index was high, resulting in a significant impact on search performance. The Meilisearch support team advised moving the settings and synonyms-as-keywords to the dedicated documents. This is no longer an issue; synonyms are loaded lazily, only when a word matches a synonym. You can see performance improvements of up to 13x, depending on the number of synonyms.
🔩 Miscellaneous

v1.48.3: v1.48.3 🫎​

Compare Source

🪲 Bug fixes

  • Fix a rare S3 snapshots bug by @​Kerollmops in #​6472

    We fixed a rare bug that could appear when using the S3 snapshot system. The bug is a race condition that occurs when we try to recycle internal buffers to reduce memory usage, which can cause an internal error and abort the snapshot upload.

  • Avoid remote search to return the same document twice by @​ManyTheFish in #​6473

    When using the remote federated search, Meilisearch was returning the same document twice from different machines. This was due to an internal filter that was not forwarded properly to the remote instances.

🔩 Miscellaneous

New Contributors

Thanks to @​0xfandom, who made his first contribution in #​6468 🎉

Full Changelog: meilisearch/meilisearch@v1.48.2...v1.48.3

v1.48.2: 🫎

Compare Source

Meilisearch v1.48.2 and Meilisearch v1.47.1 address CVE-2026-57823 and CVE-2026-57824.
We recommend updating if you are in one of the following situations:

  1. You have API keys where indexes is not ["*"] and where actions contains more permissions than: ["search", "documents.*", "indexes.*", "tasks.cancel", "tasks.delete", "tasks.get", "settings.*", "stats.*", "fields.post"]
  2. You have search tenant tokens and either an embedder or a chat workspace
  • We recommend that users of Meilisearch v1.48 update to Meilisearch v1.48.2
  • We recommend that users of Meilisearch v1.47 or lower update to Meilisearch v1.47.1

These versions both fix the following:

  1. CVE-2026-57824: Improper authentication leads to privilege escalation: an authenticated user with an index-scoped API and the appropriate set of actions could use global actions to read and write the global state of the Meilisearch instance. Possibly impacted users of Meilisearch Cloud were contacted ahead-of-time.
  2. CVE-2026-57823: Improper authentication leads to information disclosure: a user with a search tenant token could get some limited information about the existence of a document outside of the scope of the search rules attached to the tenant token, an indirect information about the content of the document.

We detected no trace of exploitation of these vulnerabilities.

We thank PuH4ck3rX for reporting these vulnerabilities ❤️

v1.48.1: 🫎

Compare Source

Revert #​6432 due to a dumpless upgrade bug report.

Full Changelog: meilisearch/meilisearch@v1.48.0...v1.48.1

v1.48.0: 🫎​

Compare Source

✨ Enhancement

[Experimental] Render 🫎​ template route

by @​Mubelotix in #​5765

Introduces a new POST /render-template route that can be used to render any template or fragment on any input and associated renderRoute experimental feature that gates access to the route.

This route can be used to test document templates and fragments before and after having configured an embedder.

A body payload for the route is of the form:

{
  "template": /* templateTarget object */,
  "input": /* inputTarget object or null */
}

where template describes the template or fragment to render, and input describes what to use to render the template.

Upon calling this route, Meilisearch responds with:

{
  "template": "{{doc.text}}",
  "rendered": "template text after rendering using the input"
}

where template contains the unrendered base text of the document template, or the unrendered base JSON object of a fragment, and rendered contains the result of rendering the template of the chosen input.

If input is null in the request, then rendered is null in the response, and the route can be used solely to retrieve a template or fragment from the settings of an index.

Before calling the route

The API of this route is subject to change, so before calling this route, please enable the renderRoute experimental feature:

PATCH /experimental-features --json '{"renderRoute": true}'
Examples
  1. Rendering a document from an index on a document template from an embedder of that index
request
// POST /render-template

{
  "template": {
    "kind": "documentTemplate",
    "indexUid": "movies",
    "embedder": "myMoviesEmbedder"
  },
  "input": {
    "kind": "indexDocument",
    "indexUid": "movies",
    "id": "2"
}
response
{
  "template": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncatewords:10}}",
  "rendered": "A movie titled Ariel whose description starts with Taisto Kasurinen is a Finnish coal miner whose father has..."
}
  1. Rendering an inline document on a fragment from an embedder of an index
request
// POST /render-template

{
  "template": { 
    "kind": "indexingFragment", 
    "indexUid": "dogs", 
    "embedder": "multi",
    "fragment": "captionedImage" 
  },
  "input": { 
    "kind": "inlineDocument", 
    "inline": { // pass your document inline as a JSON object
      "kind": "dog",
      "name": "iko",
      "breed": "jack russell",
      "mime": "image/png",
      "image": "/9j/4AAQSk..."
    } 
  }
}
response
{
  "template": {
    "content": [
      {
        "type": "text",
        "text": "A picture of a {{doc.kind}} of breed {{doc.breed}}"
      },
      {
        "type": "image_base64",
        "image_base64": "data:{{doc.mime}};base64,{{doc.image}}"
      }
    ]
  },
  "rendered": {
    "content": [
      {
        "type": "text",
        "text": "A picture of a dog of breed jack russell"
      },
      {
        "type": "image_base64",
        "image_base64": "data:image/png;base64,/9j/4AAQSk..."
      }
    ]
  }
}
  1. Rendering a search query on a search fragment from a multimodal embedder of an index
request
// POST /render-template
{
  "template": { 
    "kind": "searchFragment", 
    "indexUid": "testIndex", 
    "embedder": "testEmbedder",
    "fragment": "justBreed"
  },
  "input": {
    "kind": "inlineSearch",
    "inline": { // pass the search query inline
      "q": "unused",
      "media": {
        "name": "iko",
        "breed": "jack russell"
      },
      "filter": "ignored"
    }
  }
}
response
    {
      "template": "It's a {{ media.breed }}",
      "rendered": "It's a jack russell"
    }
  1. Rendering an inline document on the document template from the chat settings of an index
request
// POST /render-template

{
  "template": {
    "kind": "chatDocumentTemplate",
    "indexUid": "movies"
	// no embedder to specify since chat document template is global to index
  },
  "input": {
    "kind": "indexDocument",
    "indexUid": "movies",
    "id": "2"
}
response
{
  "template": "{% for field in fields %}{% if field.is_searchable and field.value != nil %}{{ field.name }}: {{ field.value }}\n{% endif %}{% endfor %}",
  "rendered": "id: 2\ntitle: Ariel\noverview: Taisto Kasurinen is a Finnish coal miner whose father has just committed suicide and who is framed for a crime he did not commit. In jail, he starts to dream about leaving the country and starting a new life. He escapes from prison but things don't go as planned...\ngenres: DramaCrimeComedy\nposter: https://image.tmdb.org/t/p/w500/ojDg0PGvs6R9xYFodRct2kdI6wC.jpg\nrelease_date: 593395200\n"
}
  1. Rendering a document from an index on an inline document template
request
// POST /render-template

{
  "template": {
    "kind": "inlineDocumentTemplate",
    "inline": "You can pass templates inline as well: nice to test them! {{doc.id}}"
  },
  "input": {
    "kind": "indexDocument",
    "indexUid": "movies",
    "id": "2"
}
response
{
  "template": "You can pass templates inline as well: nice to test them! {{doc.id}}",
  "rendered": "You can pass templates inline as well: nice to test them! 2"
}
  1. Rendering an inline document on an inline indexing fragment
request
// POST /render-template

{
  "template": {
    "kind": "inlineFragment",
    "inline": {
      "json_maps": "supported for fragments",
      "any_string": "is in liquid format: {{doc.test}}"
    }
  },
  "input": {
     "kind": "inlineDocument",
    "inline": {
      "test": true
    }
  }
}
response
{
  "template": {
    "json_maps": "supported for fragments",
    "any_string": "is in liquid format: {{doc.test}}"
  },
  "rendered": {
    "json_maps": "supported for fragments",
    "any_string": "is in liquid format: true"
  }
}

[Experimental] Only support foreign filters on retrieval routes

by @​ManyTheFish in #​6446

Foreign filters are meant to be used in a retrieval context (search, get document...), but all the actions related to writing or modifying a document could have several unexpected behaviors if foreign filters are accepted.
We prefer forbidding the usage of this feature on the writing routes.

The following routes do not support Foreign-filter anymore:

Additional change: we now ensure that the experimental features are checked when parsing a filter

🪲 Bug fixes

🔒 Security

🔩 Miscellaneous

❤️ Thanks again to @​genisis0x and @​antcybersec

v1.47.1: 🦇

Compare Source

Meilisearch v1.48.2 and Meilisearch v1.47.1 address CVE-2026-57823 and CVE-2026-57824.
We recommend updating if you are in one of the following situations:

  1. You have API keys where indexes is not ["*"] and where actions contains more permissions than: ["search", "documents.*", "indexes.*", "tasks.cancel", "tasks.delete", "tasks.get", "settings.*", "stats.*", "fields.post"]
  2. You have search tenant tokens and either an embedder or a chat workspace
  • We recommend that users of Meilisearch v1.48 update to Meilisearch v1.48.2
  • We recommend that users of Meilisearch v1.47 or lower update to Meilisearch v1.47.1

These versions both fix the following:

  1. CVE-2026-57824: Improper authentication leads to privilege escalation: an authenticated user with an index-scoped API and the appropriate set of actions could use global actions to read and write the global state of the Meilisearch instance. Possibly impacted users of Meilisearch Cloud were contacted ahead-of-time.
  2. CVE-2026-57823: Improper authentication leads to information disclosure: a user with a search tenant token could get some limited information about the existence of a document outside of the scope of the search rules attached to the tenant token, an indirect information about the content of the document.

We detected no trace of exploitation of these vulnerabilities.

We thank PuH4ck3rX for reporting these vulnerabilities ❤️

v1.47.0: 🦇

Compare Source

🌈 Enhancements

Search personalization on federated search

We now support using the search personalization feature on federated search requests.

Like page/hitPerPage or limit/offset, the personalization option must be specified in the federation attribute to work properly.
Otherwise, an error will be returned reminding you to move the attribute in federation.

By @​ManyTheFish in #​6414

The new settings indexer is feature complete 🎉

  • We now better support the tokenizer-related settings
  • We improved the quality of the new settings indexer to enhance the engine's performance when changing the locales, the dictionary, synonyms, stop words, separator, and non-separator tokens.
  • This makes the new settings indexer feature-complete, meaning that, unless you set the MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_SETTINGS environment variable to true, all settings tasks can now be handled by the new settings indexer, bringing a better scaling behavior, much faster cancellation, and a more precise progress view.

By @​Kerollmops in #​6409

Observability improvements

We expose more Prometheus metrics to improve observability, specifically to show more metrics on document throughput and ease debugging.

By @​Kerollmops in #​6430

🦋 Fixes

  • Putting attributeRank/ wordPosition before words in the rankingRules list will no longer remove hits from the response, by @​pjdurden in #​6437
  • Meilisearch will no longer ignore the searchCutoffMs in some conditions when embedding documents, by @​dureuill in #​6447
  • Meilisearch will no longer fail to proxy a search request with a filter containing a ' during remote federated search or useNetwork: true search requests, by @​dureuill in #​6445

🔒 Security

🔩 Misc. changes

Search implementation refactor

Refactor the search pipeline to mutualize the code.
The new implementation will always perform a federated search under the hood, and then the output will be transformed into the expected route's output.

Noticeable changes from the user perspective:

  • Some error messages have been modified
  • Small breaking change: a few error codes change, such as MultiSearch<Error> <--> Search<Error>

Other changes

New Contributors

Full Changelog: meilisearch/meilisearch@v1.46.1...v1.47.0

v1.46.1: 🦆

Compare Source

Queue documents fetch routes

Add an experimental feature, queueDocumentsFetch, forcing the routes GET indexes/:uid/documents and POST indexes/:uid/documents/fetch to wait in the search queue if there is no available thread to process them.

v1.46.0: 🦆

Compare Source

This release introduces fixes for a regression in v1.45.0, where we were batching deletions by filter with other deletions or additions. It also enables the new settings indexer to support more parameters, making the engine faster to index documents when those settings are specified.

✨ Enhancement
  • Support exact and disable on numbers in the new settings indexer by @​Kerollmops in #​6398
    Introduce support for exact words and disable-on-words parameters in the new settings indexer, making the engine more efficient when changing these settings.

  • Support computing prefixes in the new settings indexer by @​Kerollmops in #​6391
    Support for the prefix search settings in the new settings indexer, so that changing this parameter makes the engine more efficient.

🪲 Bug fixes
  • Better limit read bytes when creating the S3 multipart part by @​Kerollmops in #​6405
    This fixes an issue we had with the multipart part size by ensuring we never construct a part larger than the defined multipart part size. With this fix, we always create a multipart with the provided multipart part size, except for the last part. Thanks, @​vidit-virmani, for the help investigating the issue.

  • Batch of documentDeletionByFilter with documentAdditionOrUpdate by @​Kerollmops and @​ManyTheFish in #​6415
    Correctly implement the support for auto-batching deletion by filter with document replacement and updates. This fixes a regression introduced in v1.45.0.

  • Fix a panic with incomplete filters by @​Kerollmops in #​6421
    Fixes an internal panic when a filter is incomplete by returning an error instead.

🔒 Security
🔩 Miscellaneous

v1.45.2: 🦒

Compare Source

🪲 Bug Fixes
  • Fix internal vector stores quantization config desync by @​Kerollmops in #​6411
    We noticed issues when dumpless upgrading databases containing embedders from versions older than v1.33.1. This version fixes those databases by removing the corrupted embeddings from the impacted indexes.

Full Changelog: meilisearch/meilisearch@v1.45.1...v1.45.2

v1.45.1: 🦒

Compare Source

🪲 Bug Fixes

Full Changelog: meilisearch/meilisearch@v1.45.0...v1.45.1

v1.45.0: 🦒

Compare Source

Meilisearch v1.45.0 mainly improves indexing performance when changing settings and also improves document fetch performance.

✨ Enhancement
  • Autobatch deletions by filter with additions by @​Kerollmops in #​6389
    While Meilisearch tries to improve indexing speed when users add documents and mix those additions with deletions via a filter, it is still an anti-pattern to interleave both. It is recommended to delete documents by ID whenever possible, as the engine is optimized to merge them, thereby drastically speeding up indexation.
  • Improve settings indexing performance & visibility
    We are introducing support for more settings in the nez settings indexer. If you find any bugs, please report them on GitHub. You can disable the new settings indexer by setting the environment variable like this: MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_SETTINGS=true or use the equivalent dedicated CLI parameter.
    • Support non-extracting parameters by @​Kerollmops in #​6393
      Changing one of the following settings is now directly handled by the new settings indexer: displayed fields, synonyms, the primary key, authorize typos, min word len one and two typos, max values per facet, sort facet values by, pagination max total hits, search cut off, chat, and foreign keys.
    • Support the global facet search by @​Kerollmops in #​6390
      Meilisearch can use the new settings indexer when the settings change the facet search root boolean parameter.
🪲 Bug Fixes
  • Fetching documents no longer blocks the actix worker @​dureuill in #​6402
  • Fix an internal error when changing the binary quantization by @​Kerollmops in #​6396
    We fixed an issue where users were changing the binary-quantized boolean in embedder configurations. The change corrupted the database, making it impossible to change the quantization in the future. Users had to create a binary-quantized embedder from scratch, or they could never change it again.
🔩 Miscellaneous

Full Changelog: meilisearch/meilisearch@v1.44.0...v1.45.0

v1.44.0

Compare Source

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.
    • If you observe missing semantic results after upgrading, or HTTP 500 errors for pure semantic search, please increase the value of the search cutoff in the index settings.
    • By @​dureuill in #​6377

🌈 Improvements

Remote facet search

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 #​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 #​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 #​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 #​6338

🦋 Fixes

🔩 Miscellaneous changes

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 10e3884 to 4f133e2 Compare February 23, 2026 09:41
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.35.1 chore(deps): update getmeili/meilisearch docker tag to v1.36.0 Feb 23, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch 2 times, most recently from c645ae2 to 4fef743 Compare March 2, 2026 13:00
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.36.0 chore(deps): update getmeili/meilisearch docker tag to v1.37.0 Mar 2, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 4fef743 to bdfd6d8 Compare March 9, 2026 10:15
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.37.0 chore(deps): update getmeili/meilisearch docker tag to v1.38.0 Mar 9, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from bdfd6d8 to b7eeaa3 Compare March 11, 2026 14:34
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.38.0 chore(deps): update getmeili/meilisearch docker tag to v1.38.2 Mar 11, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from b7eeaa3 to 6825dac Compare March 16, 2026 14:32
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.38.2 chore(deps): update getmeili/meilisearch docker tag to v1.39.0 Mar 16, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 6825dac to dbe9af8 Compare March 23, 2026 13:35
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.39.0 chore(deps): update getmeili/meilisearch docker tag to v1.40.0 Mar 23, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from dbe9af8 to 513b40c Compare March 30, 2026 17:22
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.40.0 chore(deps): update getmeili/meilisearch docker tag to v1.41.0 Mar 30, 2026
@renovate renovate Bot changed the title chore(deps): update getmeili/meilisearch docker tag to v1.41.0 Update getmeili/meilisearch Docker tag to v1.41.0 Apr 8, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 513b40c to 7eeb173 Compare April 13, 2026 12:30
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.41.0 Update getmeili/meilisearch Docker tag to v1.42.0 Apr 13, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 7eeb173 to 52154b3 Compare April 14, 2026 17:44
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.42.0 Update getmeili/meilisearch Docker tag to v1.42.1 Apr 14, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 52154b3 to 4c4d8d9 Compare April 26, 2026 13:46
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 4c4d8d9 to 66a7d06 Compare May 4, 2026 14:51
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.42.1 Update getmeili/meilisearch Docker tag to v1.43.0 May 4, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 66a7d06 to e1f8c72 Compare May 12, 2026 17:51
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.43.0 Update getmeili/meilisearch Docker tag to v1.43.1 May 12, 2026
@erebe
erebe force-pushed the master branch 3 times, most recently from 5e498f8 to f523bd4 Compare May 17, 2026 20:20
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from e1f8c72 to 224752c Compare May 18, 2026 09:04
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.43.1 Update getmeili/meilisearch Docker tag to v1.44.0 May 18, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 224752c to 5bba955 Compare May 26, 2026 11:10
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.44.0 Update getmeili/meilisearch Docker tag to v1.45.0 May 26, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 5bba955 to 98dd94a Compare May 28, 2026 20:43
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.45.0 Update getmeili/meilisearch Docker tag to v1.45.1 May 28, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 98dd94a to e754f46 Compare June 2, 2026 16:37
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.45.1 Update getmeili/meilisearch Docker tag to v1.45.2 Jun 2, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from e754f46 to e504653 Compare June 8, 2026 10:01
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.45.2 Update getmeili/meilisearch Docker tag to v1.46.0 Jun 8, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from e504653 to 00f9de2 Compare June 9, 2026 11:15
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.46.0 Update getmeili/meilisearch Docker tag to v1.46.1 Jun 9, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 00f9de2 to c047e8a Compare June 15, 2026 11:40
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.46.1 Update getmeili/meilisearch Docker tag to v1.47.0 Jun 15, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from c047e8a to b96da94 Compare June 22, 2026 11:14
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.47.0 Update getmeili/meilisearch Docker tag to v1.48.0 Jun 22, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from b96da94 to f32a813 Compare June 22, 2026 22:44
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.48.0 Update getmeili/meilisearch Docker tag to v1.48.1 Jun 22, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from f32a813 to c915603 Compare June 24, 2026 18:44
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.48.1 Update getmeili/meilisearch Docker tag to v1.48.2 Jun 24, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from c915603 to 83fb58e Compare June 29, 2026 14:48
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.48.2 Update getmeili/meilisearch Docker tag to v1.48.3 Jun 29, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 83fb58e to 79b4b4e Compare July 6, 2026 11:38
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.48.3 Update getmeili/meilisearch Docker tag to v1.49.0 Jul 6, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 79b4b4e to 79a00e4 Compare July 20, 2026 23:11
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.49.0 Update getmeili/meilisearch Docker tag to v1.50.0 Jul 20, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from 79a00e4 to fffe03e Compare July 27, 2026 10:47
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.50.0 Update getmeili/meilisearch Docker tag to v1.51.0 Jul 27, 2026
@renovate
renovate Bot force-pushed the renovate/getmeili-meilisearch-1.x branch from fffe03e to 3232634 Compare August 3, 2026 14:12
@renovate renovate Bot changed the title Update getmeili/meilisearch Docker tag to v1.51.0 Update getmeili/meilisearch Docker tag to v1.52.0 Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants