Update getmeili/meilisearch Docker tag to v1.30.1 #275

Open
renovate wants to merge 1 commit from renovate/getmeili-meilisearch-1.x into master
Collaborator

This PR contains the following updates:

Package Update Change
getmeili/meilisearch minor v1.13.3 -> v1.30.1

Release Notes

meilisearch/meilisearch (getmeili/meilisearch)

v1.30.1: 🐸

Compare Source

What's Changed

🐛 Bug Fixes

Fix task attribution during index swap to prevent cross-index task loss by @​YoEight in #​6059

This change fixes the parenting of the tasks when doing an index swap.

Hotfix: log a warning when FieldidsWeightsMap is missing entry by @​ManyTheFish in #​6064

This hotfix avoids the encounter of following error during a search request:

{
  "message": "Inside `<query>`: Index `<index_uid>`: internal: missing <field_id> in the fieldids weights mapping.",
  "code": "internal",
  "type": "internal",
  "link": "https://docs.meilisearch.com/errors#internal"
}

🫂 New Contributors

v1.30.0: 🐸

Compare Source

🌈 Improvements

Up and down network scaling

Since v1.19.0, Meilisearch Enterprise Edition allows the automatic sharding of documents over multiple Meilisearch instances, enabling scaling to more documents than a single instance would accommodate.

Meilisearch v1.30.0 adds the ability to modify the number of participants in sharding, without having to start over sending documents to a new cluster containing the number of desired machines.

To make this possible, Meilisearch v1.30.0 introduces breaking changes. These breaking changes only affect the users of the experimental network feature who enabled automatic sharding (network.sharding = true). Users of the stable features are not affected.

Usage
Setting up the initial network
  1. Pick a leader machine that will receive all tasks. Calling a route that creates a dcument, settings or network-related task on a machine that is not the leader will now return an error.
  2. Send your network topology to the leader by calling PATCH /network:
// PATCH /network
{
  "self": "ms0",
  "leader": "ms0", // must be equal to `self`
  "remotes": {
    "ms0": {
      "url": "URL_OF_MS0",
      "searchApiKey": "SEARCH_API_KEY_OF_MS0",
      "writeApiKey": "WRITE_API_KEY_OF_MS0",
    },
    "ms1": {
      "url": "URL_OF_MS1",
      "searchApiKey": "SEARCH_API_KEY_OF_MS1",
      "writeApiKey": "WRITE_API_KEY_OF_MS1",
    }
  }
}
  1. The network is automatically propagated to other members of the network.
  2. Send settings and documents as usual, but exclusively to the leader. They will be propagated to all participants in the network, and each participant will process a piece of the documents.
Upgrading from v1.29 or earlier
  1. We recommend using the experimental dumpless upgrade feature to go from Meilisearch v1.13+ to Meilisearch v1.29.
  2. When using the experimental dumpless upgrade and the Meilisearch instance already has a network instance with sharding set to true, then the network object will be modified so that the leader is the first remote in alphabetic order. For instance, if you network contains remotes: A, B, C, the leader will be set to A.
Adding a new remote
  1. Call PATCH /network on the leader with the information about the new remote:
{
  "remotes": {
  // add information about the new remote
  "ms2": {
      "url": "URL_OF_MS2",
      "searchApiKey": "SEARCH_API_KEY_OF_MS2",
      "writeApiKey": "WRITE_API_KEY_OF_MS2",
    }
  // information about existing remotes does not need to be repeated
}
  1. The new network will be propagated from the leader to all remotes (including the new remote ms2).
  2. All remotes will register a new networkTopologyChange task that will "rebalance" the documents between the existing remotes and the new remote, that is, ms0 and ms1 will send parts of their documents to ms2
Removing a remote
  1. Call PATCH /network on the leader by setting any removed remote to null:
{
  "remotes": {
  // set removed remote to null
  "ms2": null
  // information about existing remotes does not need to be repeated
}
  1. The new network will be propagated from the leader to all remotes (including to the old remote ms2 that will then no longer participate in the network).
  2. All remotes will register a new networkTopologyChange task that will "rebalance" the documents between the remaining remotes, that is, ms2 will send its documents between ms0 and ms1
List of changes
List of changes, some of which are breaking
  1. Breaking change: The Network object returned or edited by the /network route is modified in the following way:
    • the sharding boolean is removed
    • a leader field is added as an optional string. When it is not null, it has the same effect (and more) than having sharding: true in the previous iteration of the Network object. The leader is used as a check when receiving task creation requests.
    • a version field is added as a UUID, defaulting to the null UUID. The version is used when processing tasks.
  2. Breaking change: When a network.leader is set, calling one of the following routes will fail with not_a_leader error if the target's network.self is not the same as its network.leader:
    • POST /indexes
    • PATCH/DELETE /indexes/{:indexUid}
    • POST/PUT/DELETE /indexes/{:indexUid}/documents
    • POST /indexes/{:indexUid}/documents/delete
    • POST /indexes/{:indexUid}/documents/delete-batch
    • POST /indexes/{:indexUid}/documents/edit
    • PATCH/DELETE /indexes/{:indexUid}/settings and settings sub-routes
    • PATCH /network if the target is the new leader
    • POST /swap-indexes
  3. Breaking change: when a leader is set, PATCH /network no longer returns a Network object. Rather, it spawns a new NetworkTopologyChange task, and returns the summarized task view.
  4. Breaking change: Tasks are duplicated by the leader to the entire network when calling the following routes:
    • POST /indexes (new to this PR)
    • PATCH/DELETE /indexes/{:indexUid} (new to this PR)
    • POST/PUT/DELETE /indexes/{:indexUid}/documents (was already the case before this PR)
    • POST /indexes/{:indexUid}/documents/delete (was already the case before this PR)
    • POST /indexes/{:indexUid}/documents/delete-batch (was already the case before this PR)
    • POST /indexes/{:indexUid}/documents/edit (was already the case before this PR)
    • PATCH/DELETE /indexes/{:indexUid}/settings and settings sub-routes (new to this PR)
    • PATCH /network if the target is the new leader (new to this PR)
    • POST /swap-indexes (new to this PR)
  5. New NetworkTopologyChange tasks that perform the following:
    1. Execute any remaining task to process with a network.version lower than the network task's version
    2. Iterate over all documents in all indexes, determine their new shard, and send the document to the remote that must now have it in the new version , deleting it from the local DB
      • The export route code has been factored and specialized to allow this
      • Should the export to a remote fail, the corresponding documents are kept locally
      • If there are no documents to send for an index, still call the documents addition with an empty payload and appropriate headers containing the expected metadata
      • If there are no documents to send for an entire remote, call the network route with specific headers containing the expected metadata
    3. Wait for and process tasks from the remotes of the previous version of the network.
  6. Breaking change: When importing dumps, we drop the self and leader from the network
  7. Network topology change tasks can be cancelled. In this case the state will be the current one (any moved documents will stay that way). Cancellation needs to happen on all machines.

by @​dureuill in #​6000

🛠️ Maintenance

Asset availability note

🌈 The Meilisearch binary is available again for meilisearch-enterprise-macos-amd64 and meilisearch-macos-amd64. It was not available for Meilisearch v1.29.

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.29.0...v1.30.0

v1.29.0: 🐑

Compare Source

Build compatibility note

The git binary must now be present at build time to populate the commitSha1 field of the /version field.

This change was made for build performance reasons.

by @​dureuill in #​6030

🌈 Improvements

Another piece of the settings indexer is available: searchable and exact attributes

The new settings indexer scales better, supports near-instant cancellations and displays the progress of the indexing operation.

Previously, the new settings indexer was enabled only if the only changes in a settings batch were to embedder settings. In Meilisearch v1.29.0, the new settings indexer will be enabled if the change is any combination of:

  • searchableAttributes
  • exactAttributes
  • proximityPrecision
  • embedders (as before)

Any other change to settings appearing in a batch will cause the batch to use the legacy settings indexer.
Additionally, the new settings indexer is currently disabled by default for Cloud users.

OSS users who would like to disable the new settings indexer should pass the MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_SETTINGS environment variable to true.

by @​Kerollmops in #​5983

Enable the new vector store by default for new indexes

Meilisearch v1.21.0 introduced a new vector store backend providing better performance and relevancy.

Starting with v1.29.0, any newly created index will default to the new backend.
Existing indexes will be left unchanged.

It is still possible to explicitly choose the vector store backend, please refer to the relevant experimental feature discussion page.

by @​Kerollmops in #​6004

Support more models for huggingFace embedder

You can now select models with the XLM Roberta architecture when generating embeddings locally on CPU or GPU with the huggingFace embedder.

by @​qdequele in #​6018

🦋 Bug fixes

🔧 Maintenance and Misc.

Last week was a Quality of Life week, and while we still had improvements in the pipe, the bulk of our work was dedicated to maintenance tasks.

Most notably, the CI is now faster, going from over one hour to less than 30 minutes, and also more reliable as it automatically tests the dumpless upgrade.

  • New workload to run declarative tests. This is, in particular, very useful to automatically test the dumpless upgrade. By @​Mubelotix in #​5861
  • The code that applies the dumpless upgrade migrations was rewritten to make it easier to maintain. By @​dureuill in #​6029
  • We no longer run macOS and Windows tests at PR time. These CI jobs were very slow and given their limited impact they will only be run on the nightly builds. Ny @​Kerollmops in #​6021
  • Send notifications for Kubernetes integration when releasing by @​curquiza in #​6023
  • Introduce xtask sub-command to generate prototype tag names with the expected nomenclature by @​Kerollmops in #​6022
  • Fix misc. CI issues by @​dureuill in #​6026

Asset availability note

⚠️ The Meilisearch binary is not available for meilisearch-enterprise-macos-amd64 and meilisearch-macos-amd64 due to a compilation oversight. #​6037 aims at fixing this for future releases.

The more recent meilisearch-enterprise-macos-apple-silicon and meilisearch-macos-apple-silicon are fine.

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.28.2...v1.29.0

v1.28.2: 🐩

Compare Source

This release fixes a bug affecting the Prometheus metrics route in versions 1.28.0 and 1.28.1, specifically when the instance has too many tasks. The issue is visible as high memory usage and could cause the instance to be OOM-killed. If you are using the /metrics route, we recommend deleting all succeeded or failed tasks in the index using the dedicated route or upgrading to at least v1.28.2.

🐛 Bug fixes

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.28.1...v1.28.2

v1.28.1: 🐩

Compare Source

This release features two fixes: one to ensure that we correctly upload the Linux-amd64 binaries for the Community and Enterprise editions, and one contributed by an external developer to ensure that we still return documents that don't contain the sortable attribute after those that do.

🐛 Bug Fixes
🫂 New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.28.0...v1.28.1

v1.28.0: 🐩

Compare Source

This release introduces improvements to language support and separates the community and enterprise binary editions. We now offer binaries under the BUSL-1.1 license, identified by the "enterprise" term in their names, in addition to our MIT-licensed binaries, which retain their original names. Docker images for the enterprise edition are available in the getmeili/meilisearch-enterprise repository.

📝 Licensing
  • Separation of EE and CE. CE remains the default binary, and the name does not change by Louis on #​6011
Enhancement
  • Charabia v0.9.9: introduce a better word segmentation for Thai, Khmer, and German languages by @​ManyTheFish in #​6007
  • Expose batch progress traces on the metrics route to improve the indexing debugging experience by @​Kerollmops in #​5956
🔩 Miscellaneous
🫂 New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.27.0...v1.28.0

v1.27.0: 🦮

Compare Source

This release improves the batch size for better performance. It also fixes bugs with the embedders that could skip some documents during generation and resolves an issue with the document route that displayed the same documents on multiple pages. It improves the quality of error messages when uploading snapshots to S3, which helps with debugging.

⚙️ Compatibility support
  • Update macOS platform version in the CI by @​Kerollmops in #​6001
    Meilisearch MacOS binaries now generated with MacOS Sonoma (macos-14)
Enhancement
🪲 Bug fixes
  • Fix issue that could cause Meilisearch to skip some documents when performing embedding operations by @​dureuill in #​5995
    • Every available_parallelismth document in a batch was ignored for the purpose of embedding when using a Hugging Face embedder #​5976
    • Every 40th document in a batch was ignored for the purpose of embedding when using a REST embedder with only one embedding per request
    • To verify if documents in your database have been affected:
      1. enable the multimodal exp. feature
      2. search or fetch with filter: NOT _vectors EXISTS to find documents without vectors.
  • Fix /documents/fetch bug that could cause duplicated search results when paginating sorted documents by @​ManyTheFish in #​5999

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.26.0...v1.27.0

v1.26.0: 🐛

Compare Source

Enhancements

Allow to attach custom metadata in the document addition or update tasks

  • To make it easier to keep track of which documents were processed by Meilisearch, it is now possible to attach an arbitrary string to all routes that create document-related tasks.
  • Tasks created with this custom metadata will display the passed metadata when accessed by the tasks route or sent in webhooks.
  • To use this feature, add the customMetadata query parameter to any supported route:
POST /indexes/{indexUid}/documents?customMetadata=my-metadata-for-the-task
  • Note that, as usual for query parameters, the value of the parameter must be URL-encoded.
  • List of supported routes:
POST /indexes/{indexUid}/documents
PUT /indexes/{indexUid}/documents
DELETE /indexes/{indexUid}/documents/{documentId}
POST /indexes/{indexUid}/documents/delete-batch
POST /indexes/{indexUid}/documents/delete
POST /indexes/{indexUid}/documents/edit
DELETE /indexes/{indexUid}/documents
  • Sample output of GET /tasks for tasks with metadata:
{
  "results": [
    {
      "uid": 37,
      "batchUid": 37,
      "indexUid": "mieli",
      "status": "succeeded",
      "type": "documentDeletion",
      "canceledBy": null,
      "details": {
        "deletedDocuments": 31944
      },
      "error": null,
      "duration": "PT0.511099S",
      "enqueuedAt": "2025-11-06T16:33:37.816237Z",
      "startedAt": "2025-11-06T16:33:37.821591Z",
      "finishedAt": "2025-11-06T16:33:38.33269Z",
      "customMetadata": "removeall"
    },
    {
      "uid": 36,
      "batchUid": 36,
      "indexUid": "movies",
      "status": "succeeded",
      "type": "documentAdditionOrUpdate",
      "canceledBy": null,
      "details": {
        "receivedDocuments": 31968,
        "indexedDocuments": 31944
      },
      "error": null,
      "duration": "PT3.192271S",
      "enqueuedAt": "2025-10-30T10:31:12.896073Z",
      "startedAt": "2025-10-30T10:31:12.911905Z",
      "finishedAt": "2025-10-30T10:31:16.104176Z",
      "customMetadata": "foo"
    }
  ],
  "total": 38,
  "limit": 2,
  "from": 36,
  "next": 35
}

by @​dureuill in #​5963

Support more models for huggingFace embedder

You can now select models with the modernBERT architecture when generating embeddings locally on CPU or GPU with the huggingFace embedder.

This unlocks for instance Ruri v3 and other models

by @​hayatosc in #​5980

🧪 Experimental: embedder failure modes

You can now decide to ignore some embedder-related errors. Either:

  1. Errors related to a document template not rendering properly
  2. Errors related to an embedding request to an embedder failing (this includes missing vectors in userProvided embedders)
  3. Or both kinds of errors.

When errors are ignored, the corresponding documents will not have embeddings, but the associated batch of tasks will not be marked as failed.

Of course, ignoring errors means that it is harder to notice an issue with embedders, so use this feature parsimoniously.

To enable the feature:

  • Customers of the Cloud, please ask the support.
  • OSS users, please use the MEILI_EXPERIMENTAL_CONFIG_EMBEDDER_FAILURE_MODES and set it to a comma-separated list of errors to ignore, with the possible values:
    1. ignore_document_template_failures to ignore document template failures
    2. ignore_embedder_failures to ignore embedder failures
    • For example: ignore_document_template_failures,ignore_embedder_failures ignores both kinds of failures

by @​dureuill in #​5984

🧪 Experimental: timeout control for REST embedders

You can now control the duration before a REST embedder request times out.

  • Customers of the Cloud, please ask the support.
  • OSS users, please use the MEILI_EXPERIMENTAL_REST_EMBEDDER_TIMEOUT_SECONDS, which must be a positive integer.

by @​dureuill in #​5984

🔩 Misc

👥 Contributors

Many thanks to our new contributors @​hayatosc and @​xuhongxu96 ❤️

v1.25.0: 🐈‍⬛

Compare Source

Enhancement

🔬 [Experimental]: Search personalization by @​ManyTheFish in #​5775

Add the ability to dynamically rerank the search results based on Cohere using a personalized prompt.
For more information on how to set it up, see the dedicated experimental feature discussion.

🔬 [Experimental]: Upload snapshot tarballs to S3 by @​Kerollmops in #​5948

Add the ability to upload snapshots directly to S3. It has many advantages, such as being able to stream the entire process and effectively utilizing multipart technology to send chunks of data in parallel.
For more information on how to use it, see the dedicated experimental feature discussion.

🪲 Bug fixes

⚠️ [Breaking - Security] Redact Authorization header in webhooks by @​dureuill in #​5968

The value of the Authorization header is now redacted when getting webhook, getting webhooks, or in the object returned when posting a new webhook or deleting a webhook.

  • Impact on Cloud: Similarly to embedder API, the UI should make sure to never send the Authorization header back after it has been redacted
  • Technically a breaking change, as users could previously get the key value back when getting the webhook, and that will no longer be possible
🚰 Fix the LMDB fork memory leak by @​Kerollmops in #​5967

This bug was causing crashes in the recent indexer optimizations. If you deactivated these optimizations by setting the following environment variables:

MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_PREFIX_POST_PROCESSING=true
MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_FACET_POST_PROCESSING=true

You can now safely reactivate them without experiencing memory leaks.

🇩🇪 Hotfix German word segmentation by @​ManyTheFish in meilisearch/charabia#360

German word segmentation relies on a word dictionary to segment words, but if a word is not part of the dictionary, it is cut into bigrams. The segmenter will now skip segmenting unknown words:

Source: "Feuchteschutz"
Before: ["Fe" "uc" "ht" "es, "ch", "utz"]
After:  ["Feuchteschutz"]

Source: "insgesamt"
Before: ["in" "sg" "es" "amt"]
After:  ["insgesamt"]

If you have a Meilisearch database containing German words, you must reindex your data manually.

🇨🇳 Prevent splitting of numbers and English words in Chinese text segmentation by @​JinheLin in meilisearch/charabia#354

It’s very common for Chinese, numbers, and English to appear together in the same sentence.
We now ensure that numbers and English are not segmented differently between segmenters:

Source: "我从2025年开始学习Rust语言。"
Before: ["我", "从", "2", "0", "2", "5", "年", "开始", "学习", "R", "u", "s", "t", "语言", "。"]
After:  ["我", "从", "2025", "年", "开始", "学习", "Rust", "语言", "。"]

If you have a Meilisearch database containing Chinese words, you must reindex your data manually.

🔩 Miscellaneous

Thanks to @​JinheLin, @​dureuill, @​Kerollmops, and @​ManyTheFish for their contribution! 🎉

v1.24.0: 🦞

Compare Source

This release features some improvements with the interaction of the vector store and the searchCutoffMs when using the "vectorStore": "experimental" index setting. It also introduces the metadata header Meili-Include-Metadata on the search request that adds a metadata field to the response. These metadatas contains one uid by query and a reminder of the indexUid and its primary key. We also introduced minor bug fixes around the compaction to improve the interaction with task cancellation.

Enhancement
🔩 Miscellaneous
👥 New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.23.0...v1.24.0

v1.23.0: 🐘

Compare Source

This release introduces a new compact route on the index routes, which appends a new compaction task to the queue. Meilisearch uses an LMDB environment by index, and indexes start to fragment after some time. We have noticed that the indexes generally have 30% fragmentation. By defragmenting the environment, we've seen large (2-4x) speed-ups in terms of search and indexation. This is primarily due to the reordering of the LMDB internal pages and the removal of scattered free pages throughout the file, thereby relocating the content to the beginning.

We also worked on parallelizing the post-processing of facets. We noticed that a lot of time was spent iterating over the prefixes of the index in a single-threaded loop. We redesigned this part of the indexation to make it multi-threaded. We have seen a 4x and 6x improvement in terms of time spent on this operation.

Improvements

🦋 Bug Fixes

🔩 Miscellenaous

New Contributors

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.22.1...v1.23.0

v1.22.3: 🐦🔥

Compare Source

This version contains a minor fix that affects remote federated search users. If you are not a remote federated search user, it is not necessary to migrate from v1.22.x.

🦋 Bugfixes

  • v1.22.2 raised the remote federated search timeout for waiting nodes from 5 to 30s. This version makes it configurable by setting the environment variable MEILI_EXPERIMENTAL_REMOTE_SEARCH_TIMEOUT_SECONDS to a positive integer value. Please note that no CLI flag or configuration entry is available. By @​dureuill in #​5932

v1.22.2: 🐦🔥

Compare Source

🦋 Bugfixes

  • Remote federated search would declare remotes as "timeout'd" after 5s. This timeout was raised to 30s to accomodate some search configurations. By @​dureuill in #​5919

v1.22.1

Compare Source

🐛 Bug Fixes

❤️ Huge thanks to our contributors: @​dureuill and @​irevoire.

v1.22.0: 🐦🔥

Compare Source

🚀 Enhancements

  • Introduce a new geo backend to store geojson and filter on polygon
    1. Make the _geojson field filterable
    2. Then send your documents with a _geojson field filled with a valid geojson
    3. Filter your documents with the new _geoPolygon filter, or the old _geoBoudingBox and _geoPoints filter

🐛 Bug Fixes

❤️ Huge thanks to our contributors: @​nnethercott, @​Kerollmops, @​ManyTheFish, @​dureuill and @​irevoire.

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.21.0...v1.22.0

v1.21.0: 🐷

Compare Source

🚀 Enhancements

  • Introduce a new vector store backend for better performance, especially if using the binary quantization
    1. Enable the new vectorStoreSetting experimental feature
    2. Then change the vectorSetting index setting to "experimental" for the indexes where you want to try the new vector store
  • Add Persian support (update charabia to v0.9.7) (#​5848) @​ManyTheFish

🐛 Bug Fixes

  • Observing the progress trace during indexing no longer removes parts of the trace (#​5884) @​irevoire
  • Fix dumpless upgrade decoding error when upgrading with a rest embedder (#​5886) @​dureuill.
    • In case you had encountered the issue, use the dumpless upgrade to v1.21 to fix it.

❤️ Huge thanks to our contributors: @​ja7ad, @​agourlay, @​Kerollmops, @​ManyTheFish, @​dureuill and @​irevoire.

v1.20.0: 🦟

Compare Source

🚀 Enhancements

🐛 Bug Fixes

🔒 Security

⚙️ Maintenance/misc

❤️ Huge thanks to our contributors: @​ManyTheFish, @​arithmeticmean, @​curquiza, @​dureuill, @​irevoire, @​shreeup and dependabot[bot].

v1.19.1: 🪸

Compare Source

🐛 Performance improvements

Enhance hybrid search with filter performances

In previous versions of Meilisearch, mixing hybrid search with filters, as shown below, could multiply the search time by hundreds.

{
  "q": "hello world",
  "limit": 100,
  "filter": "tag=science"
  "hybrid": {
    "semanticRatio": 0.5,
    "embedder": "default"
  }
}

Meilisearch will now directly compute the semantic distance with the filtered candidates if only a few candidates come from the filter, instead of searching for the closest embeddings matching the filter in the vector database.

v1.19.0: 🪸

Compare Source

🚀 Enhancements

Automatically shard documents to scale horizontally

Meilisearch can now automatically distribute documents between multiple instances using the new sharding feature.

Find a guide on implementing sharding in the documentation.

[!NOTE]
Sharding is an advanced feature available exclusively in Meilisearch Enterprise Edition (EE).

The EE features are governed by the Business Source License 1.1, which allows you to use, test, and develop with sharding for free in non-production environments. Please reach out to us before using it in production.

Added in #​5784 by @​dureuill

🐛 Bug Fixes

  • Takes the allowed max memory of the container when computing the max memory to use (#​5729) @​martin-g

❤️ Huge thanks to our contributors: @​Kerollmops, @​dureuill and @​martin-g.

v1.18.0: 🕷️

Compare Source

🚀 Enhancements

❤️ Huge thanks to our contributors: @​Kerollmops, @​Mubelotix, @​irevoire and @​qdequele.

v1.17.1: 🐀

Compare Source

🚀 Enhancements

⚙️ Maintenance/misc

v1.17.0: 🐀

Compare Source

[!NOTE]
Want to make your search feel more natural? Try our new chat completions route and turn your queries into conversations. Easy to set up, works with your favorite LLMs.

Enhancements
Bugs
  • Turn chat settings to PATCH by @​Mubelotix in #​5807
    ⚠️ This fix leads to a breaking change on: PUTPATCH. Integrations and SDKs will adapt to this change.
  • Fix snapshotCreation task being included in snapshot by @​Mubelotix in #​5773
Maintenance

v1.16.0: 🦚

Compare Source

Meilisearch v1.16 introduces two main features: multimodal embeddings and a new /export route. Multimodal embeddings use AI-powered search to index images in addition to textual documents. The /export route simplifies migrating from a local Meilisearch instance to Meilisearch Cloud.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Experimental feature: Multimodal embeddings

v1.16 allows indexing and searching non-textual documents, as well as performing searches with image queries. This new feature uses multimodal embedders to provide a common semantic representation for images, texts, and any other piece of data.

Usage

First, enable the multimodal experimental feature:

curl \
  -X PATCH 'MEILISEARCH_URL/experimental-features/' \
  -H 'Content-Type: application/json'  \
  --data-binary '{
    "multimodal": true
  }'

Next, pick an embedder provider that supports multimodal embeddings such as Cohere or VoyageAI to start building the embedding configuration.

The following is an example configuration for multimodal embedder using VoyageAI:

curl \
  -X PATCH 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "voyage": {
      "source": "rest",
      "url": "https://api.voyageai.com/v1/multimodalembeddings",
      "apiKey": "VOYAGE_API_KEY",
      "indexingFragments": {
        "text": {
          "value": {
            "content": [
              {
                "type": "text",
                "text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncateWords:20}}."
              }
            ]
          }
        },
        "poster": {
          "value": {
            "content": [
              {
                "type": "image_url",
                "image_url": "{{doc.poster}}"
              }
            ]
          }
        }
      },
      "searchFragments": {
        "poster": {
          "value": {
            "content": [
              {
                "type": "image_url",
                "image_url": "{{media.poster}}"
              }
            ]
          }
        },
        "image": {
          "value": {
            "content": [
              {
                "type": "image_base64",
                "image_base64": "data:{{media.image.mime}};base64,{{media.image.data}}"
              }
            ]
          }
        },
        "text": {
          "value": {
            "content": [
              {
                "type": "text",
                "text": "{{q}}"
              }
            ]
          }
        }
      },
      "request": {
        "inputs": [
          "{{fragment}}",
          "{{..}}"
        ],
        "model": "voyage-multimodal-3"
      },
      "response": {
        "data": [
          {
            "embedding": "{{embedding}}"
          },
          "{{..}}"
        ]
      }
    }}

The configuration above sets up Meilisearch to generate vectors for two fields: text and poster. It also allows users to perform searches with an image URL, a raw image, or regular text.

Use the new media search parameter together with one of the searchFragments you specified in your embedder to search with an image:

curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \
  -H 'content-type: application/json' \
  --data-binary '{
    "media": {
      "poster": "https://image.tmdb.org/t/p/w500/pgqj7QoBPWFLLKtLEpPmFYFRMgB.jpg"
    },
    "hybrid": {
      "embedder": "EMBEDDER_NAME"
    }
  }'

You can also perform a text search with q and hybrid:

curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \
  -H 'content-type: application/json' \
  --data-binary '{
    "q": "A movie with lightsabers in space",
    "hybrid": {
      "embedder": "voyage",
      "semanticRatio": 0.5
    }
  }'

Meilisearch performs searches all fields with embeddings when parsing hybrid queries targeting indexes with multimodal embedders.

For more information about this feature, please refer to its public usage page

Done by @​dureuill in #​5596

The new /export route

v1.16 introduces a new /export route that allows transferring documents between instances without having to create a dump or a snapshot. This feature is particularly useful when migrating from a local machine to Meilisearch Cloud.

Usage

To transfer data between instances, query /export and point its url parameter to the URL of the target instance:

curl \
  -X POST 'MEILISEARCH_URL/export' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "url": "http://localhost:7711"
  }'

This will generate an export and task start migrating data between instances. Depending on the target instance, you may also have to supply an API key with full admin permissions in the apiKey parameter. Consult the documentation for an exhaustive list of accepted parameters.

If the request fails, Meilisearch will retry a few times before setting its status to failed. You may also cancel an export task manually. In this case, Meilisearch will interrupt the task locally, but not in the target instance.

Done by @​kerollmops with the help of @​mubelotix in #​5670

Other improvements

Fixes 🐞

Misc

❤️ Thanks again to our external contributors:

v1.15.2: 🦘

Compare Source

This patch release introduces a major fix and some minor fixes.

Major fix: searchable attributes database bug

Some searchable fields were removed from the searchable databases when they were removed from the filterableAttributes setting.
This made them unsearchable, although they were still precise in the searchableAttributes setting.

Fixed by @​ManyTheFish in #​5660

Minor fixes

v1.15.1: 🦘

Compare Source

Meilisearch v1.15.1 adds new experimental conversational features and enables LLM-driven chat features.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

Chat with your indexes

After enabling the experimental chat feature, you can create a chat workspace with the appropriate settings.
We have a guide on how to set up a good chat interface for your indexes.

curl -X POST 'http://localhost:7700/chats/my-assistant/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "source": "openAi",
    "apiKey": "sk-abc..."
  }'

Then by using the official OpenAI SDK you'll be able to chat with your indexes.

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:7700/chats/my-assistant',
  apiKey: 'YOUR_MEILISEARCH_CHAT_API_KEY',
});

const completion = await client.chat.completions.create({
  model: 'gpt-3.5-turbo',
  messages: [{ role: 'user', content: 'What is Meilisearch?' }],
  stream: true,
});

for await (const chunk of completion) {
  console.log(chunk.choices[0]?.delta?.content || '');
}

Done by @​Kerollmops in #​5556.

v1.15.0: 🦘

Compare Source

Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Disable typo tolerance for numbers

Set typoTolerance.disableOnNumbers to true to disable typo tolerance for numbers:

curl -X POST 'http://localhost:7700/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "typoTolerance": {"disableOnNumbers": true}
  }'

Deactivating the typo tolerance on numbers can be helpful when trying to reduce false positives, such as a query term 2024 returning results that include 2025 and 2004. It may also improve indexing performance.

Done by @​ManyTheFish in #​5494.

Lexicographic string filters

This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values:

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "filter": "release_date >= '2024-06'"
  }'

This new feature can be particularly useful when filtering human-readable dates.

Done by @​dureuill in #​5535.

Other improvements

Fixes 🐞

  • Fix _matchesPosition length calculation to improve client-side cropping by @​shaokeyibb in #​5446
  • Fix _geo ranking rule by @​HDT3213 in #​5487
  • Fix a panic in the search that could happen when looking for typos with a search prefix having more than 65k possible hits in the DB by @​dureuill in #​5564
  • Make sure that passing MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS to 0 results in Meilisearch never processing any kind of task. By @​irevoire in #​5565
  • Forbid value 0 for maxTotalHits in the index settings by @​irevoire in #​5566
  • No longer reject documentTemplates that use array filters on documents (e.g. join) by @​dureuill in #​5593

Misc

❤️ Thanks again to our external contributors:

v1.14.0: 🦫

Compare Source

Meilisearch v1.14 gives more granular control over which parts of filters you can disable for indexing performance optimization. This release also includes composite embedders, which can improve embedding generation during search and indexing, and a new route to retrieve multiple documents by their IDs.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Granular filterable attribute settings

v1.14 gives you more control over which types of filter you want to disable in your searches. This allows you to further optimize indexing speeds by letting you activate only the filter features you need.

Use PATCH /indexes/INDEX_NAME/settings to specify which filters you want to enable for each attribute in your documents:

{
	"filterableAttributes": [
	  {
	    "attributePatterns": ["genre", "artist"],
	    "features": {
	      "facetSearch": true,
	      "filter": {
	        "equality": true,
	        "comparison": false
	      }
	    }
	  },
	  {
	    "attributePatterns": ["rank"],
	    "features": {
	      "facetSearch": false,
	      "filter": {
	        "equality": true,
	        "comparison": true
	      }
	    }
	  }
	]
}

For more details about this feature, please refer to the dedicated documentation page.

Done by @​ManyTheFish in #​5254.

Composite embedders

This feature allows using different embedders at search and indexing time. This can be useful when optimizing AI-powered search performance. For example, you may prefer to use:

  • A remote embedder during indexing, as remote embedders have higher bandwidth and can generate more embeddings per second
  • A local embedder when answering to search queries, as local embedders have lower latency and can respond more quickly to user input

To use the feature, follow these steps:

  1. Enable the Composite embedders feature with the Meilisearch Cloud interface, or with the /experimental-features route:
curl MEILISEARCH_URL/experimental-features \
  -H 'Content-Type: application/json'  \
  -d '{"compositeEmbedders": true}'
  1. Next, create an embedder, setting its source to "composite" and defining one searchEmbedder and one indexingEmbedder:
{
  "embedders": {
    "text": {
      "source": "composite",
      "searchEmbedder": {
        "source": "huggingFace",
        "model": "baai/bge-base-en-v1.5",
        "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a"
      },
      "indexingEmbedder": {
        "source": "rest",
        "url": "https://URL.endpoints.huggingface.cloud",
        "apiKey": "hf_XXXXXXX",
        "documentTemplate": "Your {{doc.template}}",
        "request": {
          "inputs": [
            "{{text}}",
            "{{..}}"
          ]
        },
        "response": [
          "{{embedding}}",
          "{{..}}"
        ]
      }
    }
  }
}
  1. Once the composite embedder has been created, Meilisearch will use its indexingEmbedder during indexing and searchEmbedder when responding to user queries

For more details about this feature, please refer to its public usage page.

Done by @​dureuill in #​5371 and #​5401.

Retrieve multiple documents by ID

It is now possible to retrieve multiple documents by their IDs:

curl -H 'Content-Type: application/json' MEILISEARCH_URL/indexes/INDEX_UID/documents -d '{ "ids": ["cody", "finn", "brandy", "gambit"] }'
{
  "results": [
    {
      "id": "brandy",
      "info": 13765493
    },
    {
      "id": "finn",
      "info": 35863
    },
    {
      "id": "cody",
      "info": 122263
    },
    {
      "id": "gambit",
      "info": 22222
    }
  ],
  "offset": 0,
  "limit": 20,
  "total": 4
}

[!WARNING]
Documents are not returned in the queried order. Non-existent documents are ignored.

Done by @​dureuill in #​5384.

Other improvements

Fixes

Misc

⚠️ Please consider that the batches stats content can change anytime.

❤️ Thanks again to our external contributors:


Configuration

📅 Schedule: 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 has been generated by Renovate Bot.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [getmeili/meilisearch](https://github.com/meilisearch/meilisearch) | minor | `v1.13.3` -> `v1.30.1` | --- ### Release Notes <details> <summary>meilisearch/meilisearch (getmeili/meilisearch)</summary> ### [`v1.30.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.30.1): 🐸 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.30.0...v1.30.1) ### What's Changed #### 🐛 Bug Fixes ##### Fix task attribution during index swap to prevent cross-index task loss by [@&#8203;YoEight](https://github.com/YoEight) in [#&#8203;6059](https://github.com/meilisearch/meilisearch/pull/6059) This change fixes the parenting of the tasks when doing an index swap. ##### Hotfix: log a warning when FieldidsWeightsMap is missing entry by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;6064](https://github.com/meilisearch/meilisearch/pull/6064) This hotfix avoids the encounter of following error during a search request: ```json { "message": "Inside `<query>`: Index `<index_uid>`: internal: missing <field_id> in the fieldids weights mapping.", "code": "internal", "type": "internal", "link": "https://docs.meilisearch.com/errors#internal" } ``` #### 🫂 New Contributors - [@&#8203;YoEight](https://github.com/YoEight) made their first contribution in [#&#8203;6059](https://github.com/meilisearch/meilisearch/pull/6059) ### [`v1.30.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.30.0): 🐸 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.29.0...v1.30.0) ### 🌈 Improvements #### Up and down network scaling Since [v1.19.0](https://github.com/meilisearch/meilisearch/releases/tag/v1.19.0), Meilisearch [Enterprise Edition](https://github.com/meilisearch/meilisearch/blob/main/README.md#-enterprise-edition-ee) allows the automatic sharding of documents over multiple Meilisearch instances, enabling scaling to more documents than a single instance would accommodate. Meilisearch v1.30.0 adds the ability to modify the number of participants in sharding, without having to start over sending documents to a new cluster containing the number of desired machines. To make this possible, Meilisearch v1.30.0 introduces *breaking changes*. These breaking changes only affect the users of the experimental `network` feature who enabled automatic sharding (`network.sharding = true`). Users of the stable features are not affected. ##### Usage <details> <summary>Setting up the initial network</summary> 1. Pick a leader machine that will receive all tasks. Calling a route that creates a dcument, settings or network-related task on a machine that is not the leader will now return an error. 2. Send your network topology to the leader by calling `PATCH /network`: ```jsonc // PATCH /network { "self": "ms0", "leader": "ms0", // must be equal to `self` "remotes": { "ms0": { "url": "URL_OF_MS0", "searchApiKey": "SEARCH_API_KEY_OF_MS0", "writeApiKey": "WRITE_API_KEY_OF_MS0", }, "ms1": { "url": "URL_OF_MS1", "searchApiKey": "SEARCH_API_KEY_OF_MS1", "writeApiKey": "WRITE_API_KEY_OF_MS1", } } } ``` 3. The network is automatically propagated to other members of the network. 4. Send settings and documents as usual, but exclusively to the leader. They will be propagated to all participants in the network, and each participant will process a piece of the documents. </details> <details> <details> <summary>Upgrading from v1.29 or earlier</summary> 1. We recommend using the experimental dumpless upgrade feature to go from Meilisearch v1.13+ to Meilisearch v1.29. 2. When using the experimental dumpless upgrade and the Meilisearch instance already has a `network` instance with `sharding` set to `true`, then the `network` object will be modified so that the leader is the first remote in alphabetic order. For instance, if you network contains remotes: `A`, `B`, `C`, the leader will be set to `A`. </details> <summary>Adding a new remote</summary> 1. Call `PATCH /network` on the leader with the information about the new remote: ```jsonc { "remotes": { // add information about the new remote "ms2": { "url": "URL_OF_MS2", "searchApiKey": "SEARCH_API_KEY_OF_MS2", "writeApiKey": "WRITE_API_KEY_OF_MS2", } // information about existing remotes does not need to be repeated } ``` 4. The new network will be propagated from the leader to all remotes (including the new remote `ms2`). 5. All remotes will register a new `networkTopologyChange` task that will "rebalance" the documents between the existing remotes and the new remote, that is, `ms0` and `ms1` will send parts of their documents to `ms2` </details> <details> <summary>Removing a remote</summary> 1. Call `PATCH /network` on the leader by setting any removed remote to `null`: ```jsonc { "remotes": { // set removed remote to null "ms2": null // information about existing remotes does not need to be repeated } ``` 2. The new network will be propagated from the leader to all remotes (including to the old remote `ms2` that will then no longer participate in the network). 3. All remotes will register a new `networkTopologyChange` task that will "rebalance" the documents between the remaining remotes, that is, `ms2` will send its documents between `ms0` and `ms1` </details> ##### List of changes <details> <summary>List of changes, some of which are breaking</summary> 1. Breaking change: The `Network` object returned or edited by the `/network` route is modified in the following way: - the `sharding` boolean is removed - a `leader` field is added as an optional string. When it is not `null`, it has the same effect (and more) than having `sharding: true` in the previous iteration of the `Network` object. The leader is used as a check when receiving task creation requests. - a `version` field is added as a UUID, defaulting to the null UUID. The version is used when processing tasks. 2. Breaking change: When a `network.leader` is set, calling one of the following routes will fail with `not_a_leader` error if the target's `network.self` is not the same as its `network.leader`: - `POST /indexes` - `PATCH/DELETE /indexes/{:indexUid}` - `POST/PUT/DELETE /indexes/{:indexUid}/documents` - `POST /indexes/{:indexUid}/documents/delete` - `POST /indexes/{:indexUid}/documents/delete-batch` - `POST /indexes/{:indexUid}/documents/edit` - `PATCH/DELETE /indexes/{:indexUid}/settings` and settings sub-routes - `PATCH /network` if the target is the **new** leader - `POST /swap-indexes` 3. Breaking change: when a `leader` is set, `PATCH /network` no longer returns a `Network` object. Rather, it spawns a new `NetworkTopologyChange` task, and returns the summarized task view. 4. Breaking change: Tasks are duplicated by the leader to the entire network when calling the following routes: - `POST /indexes` (new to this PR) - `PATCH/DELETE /indexes/{:indexUid}` (new to this PR) - `POST/PUT/DELETE /indexes/{:indexUid}/documents` (was already the case before this PR) - `POST /indexes/{:indexUid}/documents/delete` (was already the case before this PR) - `POST /indexes/{:indexUid}/documents/delete-batch` (was already the case before this PR) - `POST /indexes/{:indexUid}/documents/edit` (was already the case before this PR) - `PATCH/DELETE /indexes/{:indexUid}/settings` and settings sub-routes (new to this PR) - `PATCH /network` if the target is the **new** leader (new to this PR) - `POST /swap-indexes` (new to this PR) 5. New `NetworkTopologyChange` tasks that perform the following: 1. Execute any remaining task to process with a `network.version` lower than the network task's version 2. Iterate over all documents in all indexes, determine their new shard, and send the document to the remote that must now have it in the new version , deleting it from the local DB - The export route code has been factored and specialized to allow this - Should the export to a remote fail, the corresponding documents are kept locally - If there are no documents to send for an index, still call the documents addition with an empty payload and appropriate headers containing the expected metadata - If there are no documents to send for an entire remote, call the `network` route with specific headers containing the expected metadata 3. Wait for and process tasks from the remotes of the previous version of the network. 6. Breaking change: When importing dumps, we drop the `self` and `leader` from the network 7. Network topology change tasks can be cancelled. In this case the state will be the current one (any moved documents will stay that way). Cancellation needs to happen on all machines. </details> by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;6000](https://github.com/meilisearch/meilisearch/pull/6000) #### 🛠️ Maintenance - Fix macos-amd64 compilation by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;6037](https://github.com/meilisearch/meilisearch/pull/6037) - Move to Rust v1.91.1 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6039](https://github.com/meilisearch/meilisearch/pull/6039) - Remove risk of command injection in CI by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;6041](https://github.com/meilisearch/meilisearch/pull/6041) #### Asset availability note 🌈 The Meilisearch binary is available again for `meilisearch-enterprise-macos-amd64` and `meilisearch-macos-amd64`. It was not available for Meilisearch v1.29. **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.29.0...v1.30.0> ### [`v1.29.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.29.0): 🐑 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.28.2...v1.29.0) #### Build compatibility note The git binary must now be present at build time to populate the `commitSha1` field of the `/version` field. This change was made for build performance reasons. by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;6030](https://github.com/meilisearch/meilisearch/pull/6030) #### 🌈 Improvements ##### Another piece of the settings indexer is available: searchable and exact attributes The new settings indexer scales better, supports near-instant cancellations and displays the progress of the indexing operation. Previously, the new settings indexer was enabled only if the **only** changes in a settings batch were to embedder settings. In Meilisearch v1.29.0, the new settings indexer will be enabled if the change is any combination of: - `searchableAttributes` - `exactAttributes` - `proximityPrecision` - `embedders` (as before) Any other change to settings appearing in a batch will cause the batch to use the legacy settings indexer. Additionally, the new settings indexer is currently disabled by default for Cloud users. OSS users who would like to disable the new settings indexer should pass the `MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_SETTINGS` environment variable to `true`. by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5983](https://github.com/meilisearch/meilisearch/pull/5983) ##### Enable the new vector store by default for new indexes [Meilisearch v1.21.0](https://github.com/meilisearch/meilisearch/releases/tag/v1.21.0) introduced a new vector store backend providing better performance and relevancy. Starting with v1.29.0, any newly created index will default to the new backend. Existing indexes will be left unchanged. It is still possible to explicitly choose the vector store backend, please refer to [the relevant experimental feature discussion page](https://github.com/orgs/meilisearch/discussions/860). by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6004](https://github.com/meilisearch/meilisearch/pull/6004) ##### Support more models for `huggingFace` embedder You can now select models with the XLM Roberta architecture when generating embeddings locally on CPU or GPU with the `huggingFace` embedder. by [@&#8203;qdequele](https://github.com/qdequele) in [#&#8203;6018](https://github.com/meilisearch/meilisearch/pull/6018) #### 🦋 Bug fixes - Fix rare internal error in the experimental vector store by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6032](https://github.com/meilisearch/meilisearch/pull/6032) #### 🔧 Maintenance and Misc. Last week was a Quality of Life week, and while we still had improvements in the pipe, the bulk of our work was dedicated to maintenance tasks. Most notably, the CI is now faster, going from over one hour to less than 30 minutes, and also more reliable as it automatically tests the dumpless upgrade. - New workload to run declarative tests. This is, in particular, very useful to automatically test the dumpless upgrade. By [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5861](https://github.com/meilisearch/meilisearch/pull/5861) - The code that applies the dumpless upgrade migrations was rewritten to make it easier to maintain. By [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;6029](https://github.com/meilisearch/meilisearch/pull/6029) - We no longer run macOS and Windows tests at PR time. These CI jobs were very slow and given their limited impact they will only be run on the nightly builds. Ny [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6021](https://github.com/meilisearch/meilisearch/pull/6021) - Send notifications for Kubernetes integration when releasing by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;6023](https://github.com/meilisearch/meilisearch/pull/6023) - Introduce `xtask` sub-command to generate prototype tag names with the expected nomenclature by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6022](https://github.com/meilisearch/meilisearch/pull/6022) - Fix misc. CI issues by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;6026](https://github.com/meilisearch/meilisearch/pull/6026) #### Asset availability note ⚠️ The Meilisearch binary is not available for `meilisearch-enterprise-macos-amd64` and `meilisearch-macos-amd64` due to [a compilation oversight](https://github.com/meilisearch/meilisearch/actions/runs/20023402416/job/57415170954). [#&#8203;6037](https://github.com/meilisearch/meilisearch/pull/6037) aims at fixing this for future releases. The more recent `meilisearch-enterprise-macos-apple-silicon` and `meilisearch-macos-apple-silicon` are fine. **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.28.2...v1.29.0> ### [`v1.28.2`](https://github.com/meilisearch/meilisearch/releases/tag/v1.28.2): 🐩 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.28.1...v1.28.2) This release fixes a bug affecting the Prometheus metrics route in versions 1.28.0 and 1.28.1, specifically when the instance has too many tasks. The issue is visible as high memory usage and could cause the instance to be OOM-killed. If you are using the /metrics route, we recommend deleting all succeeded or failed tasks in the index using [the dedicated route](https://www.meilisearch.com/docs/reference/api/tasks#query-parameters-3) or upgrading to at least v1.28.2. ##### 🐛 Bug fixes - Limit the number of retrieved tasks to one in the metrics by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6024](https://github.com/meilisearch/meilisearch/pull/6024) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.28.1...v1.28.2> ### [`v1.28.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.28.1): 🐩 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.28.0...v1.28.1) This release features two fixes: one to ensure that we correctly upload the Linux-amd64 binaries for the Community and Enterprise editions, and one contributed by an external developer to ensure that we still return documents that don't contain the sortable attribute after those that do. ##### 🐛 Bug Fixes - Fix sort on /documents endpoint when field has no values by [@&#8203;EclipseAditya](https://github.com/EclipseAditya) in [#&#8203;6016](https://github.com/meilisearch/meilisearch/pull/6016) - Fix release CI after we introduced the enterprise edition by [@&#8203;paulden](https://github.com/paulden) in [#&#8203;6020](https://github.com/meilisearch/meilisearch/pull/6020) ##### 🫂 New Contributors - [@&#8203;EclipseAditya](https://github.com/EclipseAditya) made their first contribution in [#&#8203;6016](https://github.com/meilisearch/meilisearch/pull/6016) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.28.0...v1.28.1> ### [`v1.28.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.28.0): 🐩 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.27.0...v1.28.0) This release introduces improvements to language support and separates the community and enterprise binary editions. We now offer binaries [under the BUSL-1.1 license](https://github.com/meilisearch/meilisearch/blob/main/LICENSE-EE), identified by the "enterprise" term in their names, in addition to our MIT-licensed binaries, which retain their original names. Docker images for the enterprise edition are available in the [`getmeili/meilisearch-enterprise`](https://hub.docker.com/r/getmeili/meilisearch-enterprise/tags) repository. ##### 📝 Licensing - Separation of EE and CE. CE remains the default binary, and the name does not change by Louis on [#&#8203;6011](https://github.com/meilisearch/meilisearch/issues/6011) ##### **✨ Enhancement** - Charabia v0.9.9: introduce a better word segmentation for Thai, Khmer, and German languages by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;6007](https://github.com/meilisearch/meilisearch/issues/6007) - Expose batch progress traces on the metrics route to improve the indexing debugging experience by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5956](https://github.com/meilisearch/meilisearch/issues/5956) ##### **🔩 Miscellaneous** - Remove version from the name of the test job in CI by [@&#8203;paulden](https://github.com/paulden) in [#&#8203;6012](https://github.com/meilisearch/meilisearch/issues/6012) - Upgrade most of the dependencies by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6002](https://github.com/meilisearch/meilisearch/issues/6002) - Build x86 and ARM images on GitHub-hosted runners by [@&#8203;paulden](https://github.com/paulden) in [#&#8203;6003](https://github.com/meilisearch/meilisearch/issues/6003) - Fix SDKs tests to use the enterprise edition and continue testing the sharding feature by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;6013](https://github.com/meilisearch/meilisearch/issues/6013) ##### 🫂 New Contributors - [@&#8203;paulden](https://github.com/paulden) made their first contribution in [#&#8203;6003](https://github.com/meilisearch/meilisearch/issues/6003) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.27.0...v1.28.0> ### [`v1.27.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.27.0): 🦮 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.26.0...v1.27.0) This release improves the batch size for better performance. It also fixes bugs with the embedders that could skip some documents during generation and resolves an issue with the document route that displayed the same documents on multiple pages. It improves the quality of error messages when uploading snapshots to S3, which helps with debugging. ##### ⚙️ Compatibility support - Update macOS platform version in the CI by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;6001](https://github.com/meilisearch/meilisearch/pull/6001) Meilisearch MacOS binaries now generated with MacOS Sonoma (`macos-14`) ##### ✨ Enhancement - Show errors in the task queue to improve debugging of S3 snapshot uploads by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5994](https://github.com/meilisearch/meilisearch/pull/5994) - Batched tasks total size now defaults to half of the max indexing memory to improve task ingestion by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5990](https://github.com/meilisearch/meilisearch/pull/5990) & [#&#8203;6005](https://github.com/meilisearch/meilisearch/pull/6005) ##### 🪲 Bug fixes - Fix issue that could cause Meilisearch to skip some documents when performing embedding operations by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5995](https://github.com/meilisearch/meilisearch/pull/5995) - Every `available_parallelism`th document in a batch was ignored for the purpose of embedding when using a Hugging Face embedder [#&#8203;5976](https://github.com/meilisearch/meilisearch/issues/5976) - Every 40th document in a batch was ignored for the purpose of embedding when using a REST embedder **with only one embedding per request** - To verify if documents in your database have been affected: 1. enable the `multimodal` exp. feature 2. search or fetch with filter: `NOT _vectors EXISTS` to find documents without vectors. - Fix `/documents/fetch` bug that could cause duplicated search results when paginating sorted documents by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5999](https://github.com/meilisearch/meilisearch/pull/5999) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.26.0...v1.27.0> ### [`v1.26.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.26.0): 🐛 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.25.0...v1.26.0) ### ✨ Enhancements #### Allow to attach custom metadata in the document addition or update tasks - To make it easier to keep track of which documents were processed by Meilisearch, it is now possible to attach an arbitrary string to all routes that create document-related tasks. - Tasks created with this custom metadata will display the passed metadata when accessed by the tasks route or sent in webhooks. - To use this feature, add the `customMetadata` query parameter to any supported route: ``` POST /indexes/{indexUid}/documents?customMetadata=my-metadata-for-the-task ``` - Note that, as usual for query parameters, the value of the parameter must be URL-encoded. - List of supported routes: ``` POST /indexes/{indexUid}/documents PUT /indexes/{indexUid}/documents DELETE /indexes/{indexUid}/documents/{documentId} POST /indexes/{indexUid}/documents/delete-batch POST /indexes/{indexUid}/documents/delete POST /indexes/{indexUid}/documents/edit DELETE /indexes/{indexUid}/documents ``` - Sample output of `GET /tasks` for tasks with metadata: ```json { "results": [ { "uid": 37, "batchUid": 37, "indexUid": "mieli", "status": "succeeded", "type": "documentDeletion", "canceledBy": null, "details": { "deletedDocuments": 31944 }, "error": null, "duration": "PT0.511099S", "enqueuedAt": "2025-11-06T16:33:37.816237Z", "startedAt": "2025-11-06T16:33:37.821591Z", "finishedAt": "2025-11-06T16:33:38.33269Z", "customMetadata": "removeall" }, { "uid": 36, "batchUid": 36, "indexUid": "movies", "status": "succeeded", "type": "documentAdditionOrUpdate", "canceledBy": null, "details": { "receivedDocuments": 31968, "indexedDocuments": 31944 }, "error": null, "duration": "PT3.192271S", "enqueuedAt": "2025-10-30T10:31:12.896073Z", "startedAt": "2025-10-30T10:31:12.911905Z", "finishedAt": "2025-10-30T10:31:16.104176Z", "customMetadata": "foo" } ], "total": 38, "limit": 2, "from": 36, "next": 35 } ``` by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5963](https://github.com/meilisearch/meilisearch/pull/5963) #### Support more models for `huggingFace` embedder You can now select models with the `modernBERT` architecture when generating embeddings locally on CPU or GPU with the `huggingFace` embedder. This unlocks for instance [Ruri v3](https://huggingface.co/cl-nagoya/ruri-v3-30m) and [other models](https://huggingface.co/models?other=modernbert) by [@&#8203;hayatosc](https://github.com/hayatosc) in [#&#8203;5980](https://github.com/meilisearch/meilisearch/pull/5980) #### 🧪 Experimental: embedder failure modes You can now decide to ignore some embedder-related errors. Either: 1. Errors related to a document template not rendering properly 2. Errors related to an embedding request to an embedder failing (this includes missing vectors in `userProvided` embedders) 3. Or both kinds of errors. When errors are ignored, the corresponding documents will not have embeddings, but the associated batch of tasks will not be marked as failed. Of course, ignoring errors means that it is harder to notice an issue with embedders, so use this feature parsimoniously. To enable the feature: - Customers of the Cloud, please ask the support. - OSS users, please use the `MEILI_EXPERIMENTAL_CONFIG_EMBEDDER_FAILURE_MODES` and set it to a comma-separated list of errors to ignore, with the possible values: 1. `ignore_document_template_failures` to ignore document template failures 2. `ignore_embedder_failures` to ignore embedder failures - For example: `ignore_document_template_failures,ignore_embedder_failures` ignores both kinds of failures by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5984](https://github.com/meilisearch/meilisearch/pull/5984) #### 🧪 Experimental: timeout control for REST embedders You can now control the duration before a REST embedder request times out. - Customers of the Cloud, please ask the support. - OSS users, please use the `MEILI_EXPERIMENTAL_REST_EMBEDDER_TIMEOUT_SECONDS`, which must be a positive integer. by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5984](https://github.com/meilisearch/meilisearch/pull/5984) ### 🔩 Misc - Remove unused dependency `allocator-api2` by [@&#8203;xuhongxu96](https://github.com/xuhongxu96) in [#&#8203;5969](https://github.com/meilisearch/meilisearch/pull/5969) ### 👥 Contributors Many thanks to our new contributors [@&#8203;hayatosc](https://github.com/hayatosc) and [@&#8203;xuhongxu96](https://github.com/xuhongxu96) ❤️ ### [`v1.25.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.25.0): 🐈‍⬛ [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.24.0...v1.25.0) #### ✨ Enhancement ##### 🔬 \[Experimental]: Search personalization by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5775](https://github.com/meilisearch/meilisearch/issues/5775) Add the ability to dynamically rerank the search results based on Cohere using a personalized prompt. For more information on how to set it up, see the dedicated [experimental feature discussion](https://github.com/orgs/meilisearch/discussions/866). ##### 🔬 \[Experimental]: Upload snapshot tarballs to S3 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5948](https://github.com/meilisearch/meilisearch/issues/5948) Add the ability to upload snapshots directly to S3. It has many advantages, such as being able to stream the entire process and effectively utilizing multipart technology to send chunks of data in parallel. For more information on how to use it, see the dedicated [experimental feature discussion](https://github.com/orgs/meilisearch/discussions/869). #### 🪲 Bug fixes ##### ⚠️ \[Breaking - Security] Redact Authorization header in webhooks by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5968](https://github.com/meilisearch/meilisearch/issues/5968) The value of the `Authorization` header is now redacted when getting webhook, getting webhooks, or in the object returned when posting a new webhook or deleting a webhook. - Impact on Cloud: Similarly to embedder API, the UI should make sure to never send the `Authorization` header back after it has been redacted - Technically a **breaking change**, as users could previously get the key value back when getting the webhook, and that will no longer be possible ##### 🚰 Fix the LMDB fork memory leak by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5967](https://github.com/meilisearch/meilisearch/issues/5967) This bug was causing crashes in the recent indexer optimizations. If you deactivated these optimizations by setting the following environment variables: ``` MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_PREFIX_POST_PROCESSING=true MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_FACET_POST_PROCESSING=true ``` You can now safely reactivate them without experiencing memory leaks. ##### 🇩🇪 Hotfix German word segmentation by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [meilisearch/charabia#360](https://github.com/meilisearch/charabia/pull/360) German word segmentation relies on a word dictionary to segment words, but if a word is not part of the dictionary, it is cut into bigrams. The segmenter will now skip segmenting unknown words: ```yaml Source: "Feuchteschutz" Before: ["Fe" "uc" "ht" "es, "ch", "utz"] After: ["Feuchteschutz"] Source: "insgesamt" Before: ["in" "sg" "es" "amt"] After: ["insgesamt"] ``` > If you have a Meilisearch database containing German words, you must reindex your data manually. ##### 🇨🇳 Prevent splitting of numbers and English words in Chinese text segmentation by [@&#8203;JinheLin](https://github.com/JinheLin) in [meilisearch/charabia#354](https://github.com/meilisearch/charabia/pull/354) It’s very common for Chinese, numbers, and English to appear together in the same sentence. We now ensure that numbers and English are not segmented differently between segmenters: ```yaml Source: "我从2025年开始学习Rust语言。" Before: ["我", "从", "2", "0", "2", "5", "年", "开始", "学习", "R", "u", "s", "t", "语言", "。"] After: ["我", "从", "2025", "年", "开始", "学习", "Rust", "语言", "。"] ``` > If you have a Meilisearch database containing Chinese words, you must reindex your data manually. #### 🔩 Miscellaneous - Add Flickr example to README by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5961](https://github.com/meilisearch/meilisearch/pull/5961) Thanks to [@&#8203;JinheLin](https://github.com/JinheLin), [@&#8203;dureuill](https://github.com/dureuill), [@&#8203;Kerollmops](https://github.com/Kerollmops), and [@&#8203;ManyTheFish](https://github.com/ManyTheFish) for their contribution! 🎉 ### [`v1.24.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.24.0): 🦞 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.23.0...v1.24.0) This release features some improvements with the interaction of the vector store and the `searchCutoffMs` when using the `"vectorStore": "experimental"` index setting. It also introduces the metadata header `Meili-Include-Metadata` on the search request that adds a metadata field to the response. These metadatas contains one uid by query and a reminder of the `indexUid` and its primary key. We also introduced minor bug fixes around the compaction to improve the interaction with task cancellation. ##### ✨ Enhancement - Improve the vector store search cutoff by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5945](https://github.com/meilisearch/meilisearch/pull/5945) - Improve compaction behaviors by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5946](https://github.com/meilisearch/meilisearch/pull/5946) - Search metadata by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5926](https://github.com/meilisearch/meilisearch/pull/5926) ##### 🔩 Miscellaneous - Adapt the standards of prototypes by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5942](https://github.com/meilisearch/meilisearch/pull/5942) - Bump Dockerfile alpine version to 3.22 by [@&#8203;PedroTroller](https://github.com/PedroTroller) in [#&#8203;5866](https://github.com/meilisearch/meilisearch/pull/5866) ##### 👥 New Contributors - [@&#8203;PedroTroller](https://github.com/PedroTroller) made their first contribution in [#&#8203;5866](https://github.com/meilisearch/meilisearch/pull/5866) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.23.0...v1.24.0> ### [`v1.23.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.23.0): 🐘 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.22.3...v1.23.0) This release introduces a new compact route on the index routes, which appends a new compaction task to the queue. Meilisearch uses an LMDB environment by index, and indexes start to fragment after some time. We have noticed that the indexes generally have 30% fragmentation. By defragmenting the environment, we've seen large (2-4x) speed-ups in terms of search and indexation. This is primarily due to the reordering of the LMDB internal pages and the removal of scattered free pages throughout the file, thereby relocating the content to the beginning. We also worked on parallelizing the post-processing of facets. We noticed that a lot of time was spent iterating over the prefixes of the index in a single-threaded loop. We redesigned this part of the indexation to make it multi-threaded. We have seen a 4x and 6x improvement in terms of time spent on this operation. #### ✨ Improvements - Introduce a task to compact an index by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5929](https://github.com/meilisearch/meilisearch/pull/5929) - Parallelize bulk facets & word prefix fid/position docids by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5307](https://github.com/meilisearch/meilisearch/pull/5307) - Change Java version in SDK CI by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5910](https://github.com/meilisearch/meilisearch/pull/5910) - Minor improvement in OpenAPI CI by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5834](https://github.com/meilisearch/meilisearch/pull/5834) - Add request uid to search routes by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5863](https://github.com/meilisearch/meilisearch/pull/5863) #### 🦋 Bug Fixes - Fix ranking score bug when sort is present by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5933](https://github.com/meilisearch/meilisearch/pull/5933) - Synonym performance fix by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5930](https://github.com/meilisearch/meilisearch/pull/5930) - Update README.md to fix newsletter link by [@&#8203;EazyAl](https://github.com/EazyAl) in [#&#8203;5911](https://github.com/meilisearch/meilisearch/pull/5911) - Try to fix GH license detection again by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5938](https://github.com/meilisearch/meilisearch/pull/5938) #### 🔩 Miscellenaous - Remove release-drafter and encourage usage of GitHub-generated notes by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5935](https://github.com/meilisearch/meilisearch/pull/5935) - Show Dependabot dependency upgrade in the changelog by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5900](https://github.com/meilisearch/meilisearch/pull/5900) - Bump actions/setup-go from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5912](https://github.com/meilisearch/meilisearch/pull/5912) - Bump actions/setup-dotnet from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5914](https://github.com/meilisearch/meilisearch/pull/5914) - Bump actions/setup-node from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5915](https://github.com/meilisearch/meilisearch/pull/5915) - Bump sigstore/cosign-installer from 3.9.2 to 3.10.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5916](https://github.com/meilisearch/meilisearch/pull/5916) - Bump actions/setup-python from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5913](https://github.com/meilisearch/meilisearch/pull/5913) #### New Contributors - [@&#8203;EazyAl](https://github.com/EazyAl) made their first contribution in [#&#8203;5911](https://github.com/meilisearch/meilisearch/pull/5911) **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.22.1...v1.23.0> ### [`v1.22.3`](https://github.com/meilisearch/meilisearch/releases/tag/v1.22.3): 🐦‍🔥 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.22.2...v1.22.3) This version contains a minor fix that affects remote federated search users. If you are not a remote federated search user, it is not necessary to migrate from v1.22.x. ### 🦋 Bugfixes - v1.22.2 raised the remote federated search timeout for waiting nodes from 5 to 30s. This version makes it configurable by setting the environment variable `MEILI_EXPERIMENTAL_REMOTE_SEARCH_TIMEOUT_SECONDS` to a positive integer value. Please note that no CLI flag or configuration entry is available. By [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5932](https://github.com/meilisearch/meilisearch/pull/5932) ### [`v1.22.2`](https://github.com/meilisearch/meilisearch/releases/tag/v1.22.2): 🐦‍🔥 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.22.1...v1.22.2) #### 🦋 Bugfixes - Remote federated search would declare remotes as "timeout'd" after 5s. This timeout was raised to 30s to accomodate some search configurations. By [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5919](https://github.com/meilisearch/meilisearch/pull/5919) ### [`v1.22.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.22.1) [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.22.0...v1.22.1) #### 🐛 Bug Fixes - use the latest version of zerometry that supports collection, lines and multi-lines ([#&#8203;5907](https://github.com/meilisearch/meilisearch/issues/5907)) [@&#8203;irevoire](https://github.com/irevoire) - Delete oldest tasks first ([#&#8203;5906](https://github.com/meilisearch/meilisearch/issues/5906)) [@&#8203;dureuill](https://github.com/dureuill) ❤️ Huge thanks to our contributors: [@&#8203;dureuill](https://github.com/dureuill) and [@&#8203;irevoire](https://github.com/irevoire). ### [`v1.22.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.22.0): 🐦‍🔥 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.21.0...v1.22.0) #### :rocket: Enhancements - Introduce a new geo backend to store geojson and filter on polygon 1. Make the `_geojson` field filterable 2. Then send your documents with a `_geojson` field filled with a valid [geojson](https://datatracker.ietf.org/doc/html/rfc7946) 3. Filter your documents with the new `_geoPolygon` filter, or the old `_geoBoudingBox` and `_geoPoints` filter #### :bug: Bug Fixes - Document template: Correctly render when indexing first item in array by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5896](https://github.com/meilisearch/meilisearch/pull/5896) - arroy to hannoy conversion fails with binary quantized distances by [@&#8203;nnethercott](https://github.com/nnethercott) [#&#8203;5891](https://github.com/meilisearch/meilisearch/pull/5891) :heart: Huge thanks to our contributors: [@&#8203;nnethercott](https://github.com/nnethercott), [@&#8203;Kerollmops](https://github.com/Kerollmops), [@&#8203;ManyTheFish](https://github.com/ManyTheFish), [@&#8203;dureuill](https://github.com/dureuill) and [@&#8203;irevoire](https://github.com/irevoire). **Full Changelog**: <https://github.com/meilisearch/meilisearch/compare/v1.21.0...v1.22.0> ### [`v1.21.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.21.0): 🐷 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.20.0...v1.21.0) #### 🚀 Enhancements - Introduce a new vector store backend for better performance, especially if using the binary quantization 1. Enable the new `vectorStoreSetting` experimental feature 2. Then change the `vectorSetting` index setting to `"experimental"` for the indexes where you want to try the new vector store - Done in [#&#8203;5767](https://github.com/meilisearch/meilisearch/issues/5767) by [@&#8203;Kerollmops](https://github.com/Kerollmops) - Add Persian support (update charabia to v0.9.7) ([#&#8203;5848](https://github.com/meilisearch/meilisearch/issues/5848)) [@&#8203;ManyTheFish](https://github.com/ManyTheFish) #### 🐛 Bug Fixes - Observing the progress trace during indexing no longer removes parts of the trace ([#&#8203;5884](https://github.com/meilisearch/meilisearch/issues/5884)) [@&#8203;irevoire](https://github.com/irevoire) - Fix dumpless upgrade `decoding error` when upgrading with a `rest` embedder ([#&#8203;5886](https://github.com/meilisearch/meilisearch/issues/5886)) [@&#8203;dureuill](https://github.com/dureuill). - In case you had encountered the issue, use the dumpless upgrade to v1.21 to fix it. ❤️ Huge thanks to our contributors: [@&#8203;ja7ad](https://github.com/ja7ad), [@&#8203;agourlay](https://github.com/agourlay), [@&#8203;Kerollmops](https://github.com/Kerollmops), [@&#8203;ManyTheFish](https://github.com/ManyTheFish), [@&#8203;dureuill](https://github.com/dureuill) and [@&#8203;irevoire](https://github.com/irevoire). ### [`v1.20.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.20.0): 🦟 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.19.1...v1.20.0) #### 🚀 Enhancements - Display the progressTrace in in-progress batches ([#&#8203;5858](https://github.com/meilisearch/meilisearch/issues/5858)) [@&#8203;shreeup](https://github.com/shreeup) #### 🐛 Bug Fixes - Send the version when returning prometheus metrics ([#&#8203;5876](https://github.com/meilisearch/meilisearch/issues/5876)) [@&#8203;irevoire](https://github.com/irevoire) #### 🔒 Security - Bump tracing-subscriber from 0.3.19 to 0.3.20 ([#&#8203;5869](https://github.com/meilisearch/meilisearch/issues/5869)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) #### ⚙️ Maintenance/misc - Fix scheduled CI failure ([#&#8203;5856](https://github.com/meilisearch/meilisearch/issues/5856)) [@&#8203;arithmeticmean](https://github.com/arithmeticmean) ❤️ Huge thanks to our contributors: [@&#8203;ManyTheFish](https://github.com/ManyTheFish), [@&#8203;arithmeticmean](https://github.com/arithmeticmean), [@&#8203;curquiza](https://github.com/curquiza), [@&#8203;dureuill](https://github.com/dureuill), [@&#8203;irevoire](https://github.com/irevoire), [@&#8203;shreeup](https://github.com/shreeup) and [dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v1.19.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.19.1): 🪸 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.19.0...v1.19.1) #### 🐛 Performance improvements ##### Enhance hybrid search with filter performances In previous versions of Meilisearch, mixing hybrid search with filters, as shown below, could multiply the search time by hundreds. ```json { "q": "hello world", "limit": 100, "filter": "tag=science" "hybrid": { "semanticRatio": 0.5, "embedder": "default" } } ``` Meilisearch will now directly compute the semantic distance with the filtered candidates if only a few candidates come from the filter, instead of searching for the closest embeddings matching the filter in the vector database. ### [`v1.19.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.19.0): 🪸 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.18.0...v1.19.0) #### 🚀 Enhancements #### Automatically shard documents to scale horizontally Meilisearch can now automatically distribute documents between multiple instances using the new **sharding** feature. Find a guide on implementing sharding in [the documentation](https://www.meilisearch.com/docs/learn/multi_search/implement_sharding). > \[!NOTE]\ > Sharding is an advanced feature available exclusively in **Meilisearch Enterprise Edition (EE)**. > > The EE features are governed by the [**Business Source License 1.1**](https://github.com/meilisearch/meilisearch/blob/v1.19.0/LICENSE-EE), which allows you to use, test, and develop with sharding for free in non-production environments. Please [reach out to us](mailto:sales@meilisearch.com) before using it in production. Added in [#&#8203;5784](https://github.com/meilisearch/meilisearch/issues/5784) by [@&#8203;dureuill](https://github.com/dureuill) #### 🐛 Bug Fixes - Takes the allowed max memory of the container when computing the max memory to use ([#&#8203;5729](https://github.com/meilisearch/meilisearch/issues/5729)) [@&#8203;martin-g](https://github.com/martin-g) ❤️ Huge thanks to our contributors: [@&#8203;Kerollmops](https://github.com/Kerollmops), [@&#8203;dureuill](https://github.com/dureuill) and [@&#8203;martin-g](https://github.com/martin-g). ### [`v1.18.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.18.0): 🕷️ [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.17.1...v1.18.0) #### 🚀 Enhancements - Return `queryVector` in the search response when using `retrieveVectors` ([#&#8203;5778](https://github.com/meilisearch/meilisearch/issues/5778)) [@&#8203;Mubelotix](https://github.com/Mubelotix) - Allow retrieving documents with vectors from specific embedders ([#&#8203;5741](https://github.com/meilisearch/meilisearch/issues/5741)) [@&#8203;Mubelotix](https://github.com/Mubelotix) - Support renaming indexes using the API ([#&#8203;5829](https://github.com/meilisearch/meilisearch/issues/5829)) [@&#8203;irevoire](https://github.com/irevoire) ❤️ Huge thanks to our contributors: [@&#8203;Kerollmops](https://github.com/Kerollmops), [@&#8203;Mubelotix](https://github.com/Mubelotix), [@&#8203;irevoire](https://github.com/irevoire) and [@&#8203;qdequele](https://github.com/qdequele). ### [`v1.17.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.17.1): 🐀 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.17.0...v1.17.1) #### 🚀 Enhancements - Publish OpenAPI file to release assets ([#&#8203;5823](https://github.com/meilisearch/meilisearch/issues/5823)) [@&#8203;curquiza](https://github.com/curquiza) #### ⚙️ Maintenance/misc - Fix update-cargo-version CI ([#&#8203;5831](https://github.com/meilisearch/meilisearch/issues/5831)) [@&#8203;curquiza](https://github.com/curquiza) ### [`v1.17.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.17.0): 🐀 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.16.0...v1.17.0) > \[!NOTE] > Want to make your search feel more natural? Try our new [**chat completions** route](https://www.meilisearch.com/docs/learn/chat/getting_started_with_chat) and turn your queries into conversations. Easy to set up, works with your favorite LLMs. ##### Enhancements - Support Webhook API by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5785](https://github.com/meilisearch/meilisearch/pull/5785) Check the [in progress documentation](https://github.com/meilisearch/documentation/pull/3336/files) (PR merged soon) - Optimize and stabalize performance the `STARTS_WITH` filter by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5783](https://github.com/meilisearch/meilisearch/pull/5783) No need to activate the [experimental feature](https://github.com/orgs/meilisearch/discussions/763) anymore to use this operator 🎉 - Docker image: sign container image using Cosign in keyless mode by [@&#8203;LeSuisse](https://github.com/LeSuisse) in [#&#8203;3265](https://github.com/meilisearch/meilisearch/pull/3265) ##### Bugs - Turn chat settings to `PATCH` by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5807](https://github.com/meilisearch/meilisearch/pull/5807) ⚠️ This fix leads to a breaking change on: `PUT` → `PATCH`. Integrations and SDKs will adapt to this change. - Fix `snapshotCreation` task being included in snapshot by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5773](https://github.com/meilisearch/meilisearch/pull/5773) ##### Maintenance - Tests & CI - Ignore yet another flaky test by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5740](https://github.com/meilisearch/meilisearch/pull/5740) - Fix Rails CI by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5756](https://github.com/meilisearch/meilisearch/pull/5756) - Use Server::wait\_task() instead of Index::wait\_task() by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5703](https://github.com/meilisearch/meilisearch/pull/5703) - Faster batches:: IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5626](https://github.com/meilisearch/meilisearch/pull/5626) - Adapt Go CI to recent change in the Go repo by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5790](https://github.com/meilisearch/meilisearch/pull/5790) - Bump svenstaro/upload-release-action from 2.11.1 to 2.11.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5795](https://github.com/meilisearch/meilisearch/pull/5795) - Bump sigstore/cosign-installer from 3.8.2 to 3.9.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5794](https://github.com/meilisearch/meilisearch/pull/5794) - Documentation - Release process change by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5766](https://github.com/meilisearch/meilisearch/pull/5766) - Minor fix in PR template by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5804](https://github.com/meilisearch/meilisearch/pull/5804) - Minor docs update by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5803](https://github.com/meilisearch/meilisearch/pull/5803) ### [`v1.16.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.16.0): 🦚 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.15.2...v1.16.0) Meilisearch v1.16 introduces two main features: multimodal embeddings and a new `/export` route. Multimodal embeddings use AI-powered search to index images in addition to textual documents. The `/export` route simplifies migrating from a local Meilisearch instance to Meilisearch Cloud. 🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available. Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️). ### New features and updates 🔥 #### Experimental feature: Multimodal embeddings v1.16 allows indexing and searching non-textual documents, as well as performing searches with image queries. This new feature uses multimodal embedders to provide a common semantic representation for images, texts, and any other piece of data. ##### Usage First, enable the `multimodal` experimental feature: ```sh curl \ -X PATCH 'MEILISEARCH_URL/experimental-features/' \ -H 'Content-Type: application/json' \ --data-binary '{ "multimodal": true }' ``` Next, pick an embedder provider that supports multimodal embeddings such as [Cohere](https://docs.cohere.com/v2/reference/embed) or [VoyageAI](https://docs.voyageai.com/docs/multimodal-embeddings) to start building the embedding configuration. The following is an example configuration for multimodal embedder using VoyageAI: ```sh curl \ -X PATCH 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders' \ -H 'Content-Type: application/json' \ --data-binary '{ "voyage": { "source": "rest", "url": "https://api.voyageai.com/v1/multimodalembeddings", "apiKey": "VOYAGE_API_KEY", "indexingFragments": { "text": { "value": { "content": [ { "type": "text", "text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncateWords:20}}." } ] } }, "poster": { "value": { "content": [ { "type": "image_url", "image_url": "{{doc.poster}}" } ] } } }, "searchFragments": { "poster": { "value": { "content": [ { "type": "image_url", "image_url": "{{media.poster}}" } ] } }, "image": { "value": { "content": [ { "type": "image_base64", "image_base64": "data:{{media.image.mime}};base64,{{media.image.data}}" } ] } }, "text": { "value": { "content": [ { "type": "text", "text": "{{q}}" } ] } } }, "request": { "inputs": [ "{{fragment}}", "{{..}}" ], "model": "voyage-multimodal-3" }, "response": { "data": [ { "embedding": "{{embedding}}" }, "{{..}}" ] } }} ``` The configuration above sets up Meilisearch to generate vectors for two fields: `text` and `poster`. It also allows users to perform searches with an image URL, a raw image, or regular text. Use the new `media` search parameter together with one of the `searchFragments` you specified in your embedder to search with an image: ```sh curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ -H 'content-type: application/json' \ --data-binary '{ "media": { "poster": "https://image.tmdb.org/t/p/w500/pgqj7QoBPWFLLKtLEpPmFYFRMgB.jpg" }, "hybrid": { "embedder": "EMBEDDER_NAME" } }' ``` You can also perform a text search with `q` and `hybrid`: ```sh curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ -H 'content-type: application/json' \ --data-binary '{ "q": "A movie with lightsabers in space", "hybrid": { "embedder": "voyage", "semanticRatio": 0.5 } }' ``` Meilisearch performs searches all fields with embeddings when parsing `hybrid` queries targeting indexes with multimodal embedders. For more information about this feature, please refer to its [public usage page](https://meilisearch.notion.site/Multimodal-search-usage-1c14b06b651f80c1bf9effe56dbeef54) Done by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5596](https://github.com/meilisearch/meilisearch/pull/5596) #### The new `/export` route v1.16 introduces a new `/export` route that allows transferring documents between instances without having to create a dump or a snapshot. This feature is particularly useful when migrating from a local machine to Meilisearch Cloud. ##### Usage To transfer data between instances, query `/export` and point its `url` parameter to the URL of the target instance: ```sh curl \ -X POST 'MEILISEARCH_URL/export' \ -H 'Content-Type: application/json' \ --data-binary '{ "url": "http://localhost:7711" }' ``` This will generate an export and task start migrating data between instances. Depending on the target instance, you may also have to supply an API key with full admin permissions in the `apiKey` parameter. Consult the documentation for an exhaustive list of accepted parameters. If the request fails, Meilisearch will retry a few times before setting its status to failed. You may also cancel an export task manually. In this case, Meilisearch will interrupt the task locally, but not in the target instance. Done by [@&#8203;kerollmops](https://github.com/kerollmops) with the help of [@&#8203;mubelotix](https://github.com/mubelotix) in [#&#8203;5670](https://github.com/meilisearch/meilisearch/pull/5670) #### Other improvements - Add support for nested wildcards in `attributes_to_search_on` by [@&#8203;lblack00](https://github.com/lblack00) in [#&#8203;5548](https://github.com/meilisearch/meilisearch/pull/5548) - Improve support of geo field extraction from documents by [@&#8203;nnethercott](https://github.com/nnethercott) in [#&#8203;5592](https://github.com/meilisearch/meilisearch/pull/5592) - Use all CPUs when importing dumps by [@&#8203;nnethercott](https://github.com/nnethercott) in [#&#8203;5527](https://github.com/meilisearch/meilisearch/pull/5527) - Display the last embedder error live in batches by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5707](https://github.com/meilisearch/meilisearch/pull/5707) - Add fallback instance option to revert to old indexer by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5687](https://github.com/meilisearch/meilisearch/pull/5687) - Introduce filters in the chat completions by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5710](https://github.com/meilisearch/meilisearch/pull/5710) - Allow sorting on the /documents route by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5716](https://github.com/meilisearch/meilisearch/pull/5716) - A Read-Only Admin key will be created in new empty databases, to prevent accidentally writing to database while investigating, by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5693](https://github.com/meilisearch/meilisearch/pull/5693) - Use the edition 2024 documents indexer in the dumps by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5762](https://github.com/meilisearch/meilisearch/pull/5762) ### Fixes 🐞 - Improve the performance when managing single-typo words by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5551](https://github.com/meilisearch/meilisearch/pull/5551) - Fix distinct attribute functionality for hybrid search by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5614](https://github.com/meilisearch/meilisearch/pull/5614) - Fix bug related to Cyrillic having different typo tolerance due to byte counting bug by [@&#8203;arthurgousset](https://github.com/arthurgousset) in [#&#8203;5617](https://github.com/meilisearch/meilisearch/pull/5617) - Fix Gemini `base_url` when used with OpenAI clients by [@&#8203;diksipav](https://github.com/diksipav) in [#&#8203;5692](https://github.com/meilisearch/meilisearch/pull/5692) - Remove Gemini from LLM-providers list due to incompatibility with OpenAI by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5708](https://github.com/meilisearch/meilisearch/pull/5708) - Fix bug when using the environment variable for `--experimental-limit-batched-tasks-total-size` by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5705](https://github.com/meilisearch/meilisearch/pull/5705) - Fix `disableOnNumbers` not being affected by typo tolerance settings resets by [@&#8203;Nymuxyzo](https://github.com/Nymuxyzo) in [#&#8203;5702](https://github.com/meilisearch/meilisearch/pull/5702) - Make sure to recover from missing update files by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5683](https://github.com/meilisearch/meilisearch/pull/5683) - Add analytics to chat completions by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5709](https://github.com/meilisearch/meilisearch/pull/5709) - Fix: Preserve order of searchable attributes when modified by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5751](https://github.com/meilisearch/meilisearch/pull/5751) - Fix Total Hits being wrong when rankingScoreThreshold is used by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5725](https://github.com/meilisearch/meilisearch/pull/5725) - Fix incorrect document count in stats after clearing all documents by [@&#8203;kametsun](https://github.com/kametsun) in [#&#8203;5754](https://github.com/meilisearch/meilisearch/pull/5754) - Fix chat settings dumpless upgrade by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5761](https://github.com/meilisearch/meilisearch/pull/5761) - Fix panic when attempting to remove an embedder that does not exist by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5734](https://github.com/meilisearch/meilisearch/pull/5734) - Fixes an issue where sending searchParameters: `{}` in index chat settings would incorrectly set the limit to 20 instead of resetting to empty defaults - Update the mini-dashboard to v0.2.22 and fix a crash by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5798](https://github.com/meilisearch/meilisearch/pull/5798) ### Misc - Dependencies updates - Remove old dependencies by [@&#8203;Mubelotix](https://github.com/Mubelotix) in [#&#8203;5689](https://github.com/meilisearch/meilisearch/pull/5689) - Upgrade dependencies by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5686](https://github.com/meilisearch/meilisearch/pull/5686) - Bump the mini-dashboard to v0.2.20 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5728](https://github.com/meilisearch/meilisearch/pull/5728) - CIs and tests (34 PRs, one folk, yes!) - perf: Faster IT tests - stats.rs by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5572](https://github.com/meilisearch/meilisearch/pull/5572) - perf: Faster index::get\_index IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5578](https://github.com/meilisearch/meilisearch/pull/5578) - tests: Assert succeeded/failed for the index::delete\_index IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5580](https://github.com/meilisearch/meilisearch/pull/5580) - tests: Faster index::search::mod IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5584](https://github.com/meilisearch/meilisearch/pull/5584) - perf: Faster index::update\_index IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5579](https://github.com/meilisearch/meilisearch/pull/5579) - perf: Faster integration tests for add\_documents.rs by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5574](https://github.com/meilisearch/meilisearch/pull/5574) - tests: Faster search::errors IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5599](https://github.com/meilisearch/meilisearch/pull/5599) - tests: Faster search::locales IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5601](https://github.com/meilisearch/meilisearch/pull/5601) - tests: Faster search::matching\_strategy IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5602](https://github.com/meilisearch/meilisearch/pull/5602) - tests: search::pagination IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5604](https://github.com/meilisearch/meilisearch/pull/5604) - tests: Faster search::restricted\_searchable IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5605](https://github.com/meilisearch/meilisearch/pull/5605) - tests: Faster settings::distinct IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5606](https://github.com/meilisearch/meilisearch/pull/5606) - tests: Faster settings::proximity\_settings IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5609](https://github.com/meilisearch/meilisearch/pull/5609) - tests: Faster settings::tokenizer\_customization IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5610](https://github.com/meilisearch/meilisearch/pull/5610) - tests: Faster search::facet\_search IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5600](https://github.com/meilisearch/meilisearch/pull/5600) - tests: Faster settings::get\_settings IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5607](https://github.com/meilisearch/meilisearch/pull/5607) - tests: Faster vector::binary\_quantized IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5618](https://github.com/meilisearch/meilisearch/pull/5618) - tests: Faster search::distinct IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5620](https://github.com/meilisearch/meilisearch/pull/5620) - tests: Faster similar::errors IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5621](https://github.com/meilisearch/meilisearch/pull/5621) - tests: Faster documents::get\_documents IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5624](https://github.com/meilisearch/meilisearch/pull/5624) - tests: Faster documents::delete\_documents IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5619](https://github.com/meilisearch/meilisearch/pull/5619) - tests: Faster search::geo IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5623](https://github.com/meilisearch/meilisearch/pull/5623) - tests: Faster search::hybrid IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5625](https://github.com/meilisearch/meilisearch/pull/5625) - tests: Faster tasks::mod IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5615](https://github.com/meilisearch/meilisearch/pull/5615) - tests: Faster stats::mod IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5611](https://github.com/meilisearch/meilisearch/pull/5611) - tests: Faster search::filters IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5622](https://github.com/meilisearch/meilisearch/pull/5622) - tests: Use Server::wait\_task() instead of Index::wait\_task() in search:: by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5700](https://github.com/meilisearch/meilisearch/pull/5700) - tests: Use Server::wait\_task() instead of Index::wait\_task() in index:: by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5698](https://github.com/meilisearch/meilisearch/pull/5698) - tests: Use Server::wait\_task() instead of Index::wait\_task() in settings:: by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5699](https://github.com/meilisearch/meilisearch/pull/5699) - tests: Use Server::wait\_task() instead of Index::wait\_task() in documents:: by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5697](https://github.com/meilisearch/meilisearch/pull/5697) - tests: Faster documents::update\_documents IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5682](https://github.com/meilisearch/meilisearch/pull/5682) - tests: Faster similar::mod IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5680](https://github.com/meilisearch/meilisearch/pull/5680) - tests: Faster document::errors IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5677](https://github.com/meilisearch/meilisearch/pull/5677) - tests: Faster settings::prefix\_search\_settings IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5681](https://github.com/meilisearch/meilisearch/pull/5681) - tests: Faster search::multi IT tests by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5603](https://github.com/meilisearch/meilisearch/pull/5603) - Misc - Ignore flaky test by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5627](https://github.com/meilisearch/meilisearch/pull/5627) - ci: Use `GITHUB_TOKEN` secret for the `db change check` workflow by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5632](https://github.com/meilisearch/meilisearch/pull/5632) - chore: Fix English grammar in SearchQueue's comments by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5642](https://github.com/meilisearch/meilisearch/pull/5642) - Typo fix by [@&#8203;mcmah309](https://github.com/mcmah309) in [#&#8203;5589](https://github.com/meilisearch/meilisearch/pull/5589) - docs: Recommend using a custom path for the benches' data by [@&#8203;martin-g](https://github.com/martin-g) in [#&#8203;5672](https://github.com/meilisearch/meilisearch/pull/5672) ❤️ Thanks again to our external contributors: - [Meilisearch](https://github.com/meilisearch/meilisearch): [@&#8203;martin-g](https://github.com/martin-g), [@&#8203;lblack00](https://github.com/lblack00), [@&#8203;mcmah309](https://github.com/mcmah309), [@&#8203;nnethercott](https://github.com/nnethercott), [@&#8203;arthurgousset](https://github.com/arthurgousset), [@&#8203;Mubelotix](https://github.com/Mubelotix), [@&#8203;diksipav](https://github.com/diksipav), [@&#8203;Nymuxyzo](https://github.com/Nymuxyzo), [@&#8203;kametsun](https://github.com/kametsun) - [Arroy](https://github.com/meilisearch/arroy): [@&#8203;nnethercott](https://github.com/nnethercott) ### [`v1.15.2`](https://github.com/meilisearch/meilisearch/releases/tag/v1.15.2): 🦘 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.15.1...v1.15.2) This patch release introduces a major fix and some minor fixes. ##### Major fix: searchable attributes database bug Some searchable fields were removed from the searchable databases when they were removed from the `filterableAttributes` setting. This made them unsearchable, although they were still precise in the `searchableAttributes` setting. Fixed by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5660](https://github.com/meilisearch/meilisearch/pull/5660) ##### Minor fixes - Fix chat route missing base URL and Mistral error handling by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5665](https://github.com/meilisearch/meilisearch/pull/5665) - Various fixes to embedding regeneration by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5668](https://github.com/meilisearch/meilisearch/pull/5668) ### [`v1.15.1`](https://github.com/meilisearch/meilisearch/releases/tag/v1.15.1): 🦘 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.15.0...v1.15.1) Meilisearch v1.15.1 adds new experimental conversational features and enables LLM-driven chat features. 🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available. Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️). #### Chat with your indexes After enabling the experimental chat feature, you can create a chat workspace with the appropriate settings. We [have a guide](https://www.meilisearch.com/docs/guides/ai/getting_started_with_chat) on how to set up a good chat interface for your indexes. ```bash curl -X POST 'http://localhost:7700/chats/my-assistant/settings' \ -H 'Content-Type: application/json' \ -d '{ "source": "openAi", "apiKey": "sk-abc..." }' ``` Then by using the official OpenAI SDK you'll be able to chat with your indexes. ```javascript import OpenAI from 'openai'; const client = new OpenAI({ baseURL: 'http://localhost:7700/chats/my-assistant', apiKey: 'YOUR_MEILISEARCH_CHAT_API_KEY', }); const completion = await client.chat.completions.create({ model: 'gpt-3.5-turbo', messages: [{ role: 'user', content: 'What is Meilisearch?' }], stream: true, }); for await (const chunk of completion) { console.log(chunk.choices[0]?.delta?.content || ''); } ``` Done by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5556](https://github.com/meilisearch/meilisearch/pull/5556). ### [`v1.15.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.15.0): 🦘 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.14.0...v1.15.0) Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters. 🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available. Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️). ### New features and updates 🔥 #### Disable typo tolerance for numbers Set `typoTolerance.disableOnNumbers` to `true` to disable typo tolerance for numbers: ```bash curl -X POST 'http://localhost:7700/indexes/movies/settings' \ -H 'Content-Type: application/json' \ -d '{ "typoTolerance": {"disableOnNumbers": true} }' ``` Deactivating the typo tolerance on numbers can be helpful when trying to reduce false positives, such as a query term `2024` returning results that include `2025` and `2004`. It may also improve indexing performance. Done by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5494](https://github.com/meilisearch/meilisearch/pull/5494). #### Lexicographic string filters This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values: ```bash curl -X POST 'http://localhost:7700/indexes/movies/search' \ -H 'Content-Type: application/json' \ -d '{ "filter": "release_date >= '2024-06'" }' ``` This new feature can be particularly useful when filtering human-readable dates. Done by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5535](https://github.com/meilisearch/meilisearch/pull/5535). #### Other improvements - Allows cancelling an upgrade to a new Meilisearch version by rolling back all upgraded indexes by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5523](https://github.com/meilisearch/meilisearch/pull/5523) - Support EC private key as SSL certificate by [@&#8203;HDT3213](https://github.com/HDT3213) in [#&#8203;5471](https://github.com/meilisearch/meilisearch/pull/5471) - When passing the relevant [CLI option](https://github.com/orgs/meilisearch/discussions/833), stop compacting snapshots, to speed up their generation by [@&#8203;dureuill](https://github.com/dureuill) and [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5498](https://github.com/meilisearch/meilisearch/pull/5498) and [#&#8203;5560](https://github.com/meilisearch/meilisearch/pull/5560) - Add new `batchStrategy` field in the batches stats by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5488](https://github.com/meilisearch/meilisearch/pull/5488), [#&#8203;5530](https://github.com/meilisearch/meilisearch/pull/5530), and [#&#8203;5588](https://github.com/meilisearch/meilisearch/pull/5588) - Add log field tracking time spent searching in the vector store by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5525](https://github.com/meilisearch/meilisearch/pull/5525) - Improve filterable error messages by [@&#8203;CodeMan62](https://github.com/CodeMan62) in [#&#8203;5425](https://github.com/meilisearch/meilisearch/pull/5425) - Improve error messages on embeddings dimension mismatch by [@&#8203;vuthanhtung2412](https://github.com/vuthanhtung2412) in [#&#8203;5449](https://github.com/meilisearch/meilisearch/pull/5449) - Update `/network` URL validation error message format by [@&#8203;CodeMan62](https://github.com/CodeMan62) in [#&#8203;5486](https://github.com/meilisearch/meilisearch/pull/5486) - Expose the task queue's status size in the Prometheus metrics by [@&#8203;DanasFi](https://github.com/DanasFi) in [#&#8203;5512](https://github.com/meilisearch/meilisearch/pull/5512) ### Fixes 🐞 - Fix `_matchesPosition` length calculation to improve client-side cropping by [@&#8203;shaokeyibb](https://github.com/shaokeyibb) in [#&#8203;5446](https://github.com/meilisearch/meilisearch/pull/5446) - Fix `_geo` ranking rule by [@&#8203;HDT3213](https://github.com/HDT3213) in [#&#8203;5487](https://github.com/meilisearch/meilisearch/pull/5487) - Fix a panic in the search that could happen when looking for typos with a search prefix having more than 65k possible hits in the DB by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5564](https://github.com/meilisearch/meilisearch/pull/5564) - Make sure that passing `MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS` to 0 results in Meilisearch never processing any kind of task. By [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5565](https://github.com/meilisearch/meilisearch/pull/5565) - Forbid value `0` for `maxTotalHits` in the index settings by [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5566](https://github.com/meilisearch/meilisearch/pull/5566) - No longer reject `documentTemplate`s that use array filters on documents (e.g. `join`) by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5593](https://github.com/meilisearch/meilisearch/pull/5593) ### Misc - Dependency updates - Update Rust to 1.85.1 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5480](https://github.com/meilisearch/meilisearch/pull/5480) - Update charabia v0.9.3 by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5466](https://github.com/meilisearch/meilisearch/pull/5466) - Update the Prometheus to fix a security vulnerability by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5513](https://github.com/meilisearch/meilisearch/pull/5513) - CIs and tests - Setup the Milestone CI to update the Ruleset by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5444](https://github.com/meilisearch/meilisearch/pull/5444) - Make the CI work with GitHub's merge queue grouping by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5445](https://github.com/meilisearch/meilisearch/pull/5445) - Remove Bors references from the repository by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5447](https://github.com/meilisearch/meilisearch/pull/5447) - Split unit tests for tasks by [@&#8203;shu-kitamura](https://github.com/shu-kitamura) in [#&#8203;5424](https://github.com/meilisearch/meilisearch/pull/5424) - Misc - Improve dumpless upgrade compatibility by [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5395](https://github.com/meilisearch/meilisearch/pull/5395) - Fix links and formatting in README for clarity and consistency by [@&#8203;ZeroZ-lab](https://github.com/ZeroZ-lab) in [#&#8203;5533](https://github.com/meilisearch/meilisearch/pull/5533) ❤️ Thanks again to our external contributors: - [Meilisearch](https://github.com/meilisearch/meilisearch): [@&#8203;shu-kitamura](https://github.com/shu-kitamura), [@&#8203;shaokeyibb](https://github.com/shaokeyibb), [@&#8203;CodeMan62](https://github.com/CodeMan62), [@&#8203;vuthanhtung2412](https://github.com/vuthanhtung2412), [@&#8203;HDT3213](https://github.com/HDT3213), [@&#8203;DanasFi](https://github.com/DanasFi), and [@&#8203;ZeroZ-lab](https://github.com/ZeroZ-lab). - [Charabia](https://github.com/meilisearch/charabia): [@&#8203;luflow](https://github.com/luflow), [@&#8203;mosuka](https://github.com/mosuka), and [@&#8203;HDT3213](https://github.com/HDT3213). - [RoaringBitmap](https://github.com/RoaringBitmap/roaring-rs): [@&#8203;lucascool12](https://github.com/lucascool12) and [@&#8203;Dr-Emann](https://github.com/Dr-Emann). ### [`v1.14.0`](https://github.com/meilisearch/meilisearch/releases/tag/v1.14.0): 🦫 [Compare Source](https://github.com/meilisearch/meilisearch/compare/v1.13.3...v1.14.0) Meilisearch v1.14 gives more granular control over which parts of filters you can disable for indexing performance optimization. This release also includes composite embedders, which can improve embedding generation during search and indexing, and a new route to retrieve multiple documents by their IDs. 🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available. Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️). ### New features and updates 🔥 #### Granular filterable attribute settings v1.14 gives you more control over which types of filter you want to disable in your searches. This allows you to further optimize indexing speeds by letting you activate only the filter features you need. Use `PATCH /indexes/INDEX_NAME/settings` to specify which filters you want to enable for each attribute in your documents: ```json { "filterableAttributes": [ { "attributePatterns": ["genre", "artist"], "features": { "facetSearch": true, "filter": { "equality": true, "comparison": false } } }, { "attributePatterns": ["rank"], "features": { "facetSearch": false, "filter": { "equality": true, "comparison": true } } } ] } ``` For more details about this feature, please refer to [the dedicated documentation page](https://www.meilisearch.com/docs/reference/api/settings#filterable-attribute-object). Done by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5254](https://github.com/meilisearch/meilisearch/pull/5254). #### Composite embedders This feature allows using different embedders at search and indexing time. This can be useful when optimizing AI-powered search performance. For example, you may prefer to use: - A remote embedder during indexing, as remote embedders have higher bandwidth and can generate more embeddings per second - A local embedder when answering to search queries, as local embedders have lower latency and can respond more quickly to user input To use the feature, follow these steps: 1. Enable the `Composite embedders` feature with the Meilisearch Cloud interface, or with the `/experimental-features` route: ```sh curl MEILISEARCH_URL/experimental-features \ -H 'Content-Type: application/json' \ -d '{"compositeEmbedders": true}' ``` 2. Next, create an embedder, setting its `source` to `"composite"` and defining one `searchEmbedder` and one `indexingEmbedder`: ```jsonc { "embedders": { "text": { "source": "composite", "searchEmbedder": { "source": "huggingFace", "model": "baai/bge-base-en-v1.5", "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a" }, "indexingEmbedder": { "source": "rest", "url": "https://URL.endpoints.huggingface.cloud", "apiKey": "hf_XXXXXXX", "documentTemplate": "Your {{doc.template}}", "request": { "inputs": [ "{{text}}", "{{..}}" ] }, "response": [ "{{embedding}}", "{{..}}" ] } } } } ``` 3. Once the composite embedder has been created, Meilisearch will use its `indexingEmbedder` during indexing and `searchEmbedder` when responding to user queries For more details about this feature, please refer to its [public usage page](https://www.notion.so/meilisearch/Composite-embedder-usage-14a4b06b651f81859dc3df21e8cd02a0?pvs=4#19f4b06b651f809ab3ecc0daae7d5856). Done by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5371](https://github.com/meilisearch/meilisearch/pull/5371) and [#&#8203;5401](https://github.com/meilisearch/meilisearch/pull/5401). #### Retrieve multiple documents by ID It is now possible to retrieve multiple documents by their IDs: ``` curl -H 'Content-Type: application/json' MEILISEARCH_URL/indexes/INDEX_UID/documents -d '{ "ids": ["cody", "finn", "brandy", "gambit"] }' ``` ```json { "results": [ { "id": "brandy", "info": 13765493 }, { "id": "finn", "info": 35863 }, { "id": "cody", "info": 122263 }, { "id": "gambit", "info": 22222 } ], "offset": 0, "limit": 20, "total": 4 } ``` > \[!WARNING] > Documents are *not* returned in the queried order. Non-existent documents are ignored. Done by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5384](https://github.com/meilisearch/meilisearch/pull/5384). #### Other improvements - Batch together `/documents` requests using either `PUT` or `POST` by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5293](https://github.com/meilisearch/meilisearch/pull/5293) - Display timestamped internal indexing steps on the `/batches` route by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5356](https://github.com/meilisearch/meilisearch/pull/5356) and [#&#8203;5364](https://github.com/meilisearch/meilisearch/pull/5364) - Introduce `exhaustiveFacetCount` parameter to `/facet-search` route to retrieve an exhaustive facet count by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5369](https://github.com/meilisearch/meilisearch/pull/5369) - Reduce RAM consumption of arroy by [@&#8203;irevoire](https://github.com/irevoire) in [meilisearch/arroy#105](https://github.com/meilisearch/arroy/pull/105) - Experimental feature: Cache embeddings during search (Read more in the [feature discussion](https://github.com/orgs/meilisearch/discussions/818)) by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5418](https://github.com/meilisearch/meilisearch/pull/5418) - Extend batch progress view to include indexing of vectors by [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5420](https://github.com/meilisearch/meilisearch/pull/5420) - Armenian characters are no longer case-sensitive by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5454](https://github.com/meilisearch/meilisearch/pull/5454) - Avoid reindexing searchables when the order changes by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5402](https://github.com/meilisearch/meilisearch/pull/5402) - Accept cancellation tasks even when the disk is full by [@&#8203;irevoire](https://github.com/irevoire) in [#&#8203;5492](https://github.com/meilisearch/meilisearch/pull/5492) ### Fixes - Geo update bug by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5407](https://github.com/meilisearch/meilisearch/pull/5407) - Fix prefix search on attributes listed in `disabledOnAttributes` settings by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5415](https://github.com/meilisearch/meilisearch/pull/5415) (fixes [#&#8203;5347](https://github.com/meilisearch/meilisearch/issues/5347) and [#&#8203;5452](https://github.com/meilisearch/meilisearch/issues/5452)) - Fix CI to work with merge queues by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5456](https://github.com/meilisearch/meilisearch/pull/5456) - Support fetching the pooling method from the model configuration by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5355](https://github.com/meilisearch/meilisearch/pull/5355) - Delete unused prefixes by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5413](https://github.com/meilisearch/meilisearch/pull/5413) - Fixes mini dashboard to prevent the panel from popping up every time by [@&#8203;curquiza](https://github.com/curquiza) in [#&#8203;5436](https://github.com/meilisearch/meilisearch/pull/5436) - Enabling `rankingScoreThreshold` no longer causes `_rankingScore` to be miscalculated by [@&#8203;barloes](https://github.com/barloes) and [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5313](https://github.com/meilisearch/meilisearch/pull/5313) - Validate dimensions of embedding when receiving documents with `_vectors` by [@&#8203;dureuill](https://github.com/dureuill) in [#&#8203;5478](https://github.com/meilisearch/meilisearch/pull/5478) ### Misc - Dependencies updates - Bump Ubuntu in the CI from 20.04 to 22.04 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5338](https://github.com/meilisearch/meilisearch/pull/5338) - Bump heed to v0.22 by [@&#8203;irevoire](https://github.com/irevoire) and [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5406](https://github.com/meilisearch/meilisearch/pull/5406) - Bump ring to v0.17.14 to compile on old aarch64 by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5423](https://github.com/meilisearch/meilisearch/pull/5423) - Bump zip from 2.2.2 to 2.3.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;5426](https://github.com/meilisearch/meilisearch/pull/5426) - CIs and tests - Improve test performance of get\_index.rs by [@&#8203;DerTimonius](https://github.com/DerTimonius) in [#&#8203;5210](https://github.com/meilisearch/meilisearch/pull/5210) - Ollama Integration Tests by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5308](https://github.com/meilisearch/meilisearch/pull/5308) - Ensure the settings routes are properly configured when a new field is added to the Settings struct by [@&#8203;MichaScant](https://github.com/MichaScant) in [#&#8203;5149](https://github.com/meilisearch/meilisearch/pull/5149) - Skip a snapshot test on Windows by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5383](https://github.com/meilisearch/meilisearch/pull/5383) - Fix CI to work with merge queues by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5456](https://github.com/meilisearch/meilisearch/pull/5456) - Accept total batch size in human size by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5421](https://github.com/meilisearch/meilisearch/pull/5421) - Add more progress levels to measure merging and post-processing by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5422](https://github.com/meilisearch/meilisearch/pull/5422) and [#&#8203;5468](https://github.com/meilisearch/meilisearch/pull/5468) - Isolate word fst usage to dedicate it to typo-correction by [@&#8203;ManyTheFish](https://github.com/ManyTheFish) in [#&#8203;5415](https://github.com/meilisearch/meilisearch/pull/5415) - Show database sizes batches by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5457](https://github.com/meilisearch/meilisearch/pull/5457) and [#&#8203;5464](https://github.com/meilisearch/meilisearch/pull/5464) > ⚠️ Please consider that the batches stats content can change anytime. - Improve performance of computing document stats by [@&#8203;Kerollmops](https://github.com/Kerollmops) in [#&#8203;5465](https://github.com/meilisearch/meilisearch/pull/5465) ❤️ Thanks again to our external contributors: - [Meilisearch](https://github.com/meilisearch/meilisearch): [@&#8203;MichaScant](https://github.com/MichaScant) - [Heed](https://github.com/meilisearch/heed): [@&#8203;oXtxNt9U](https://github.com/oXtxNt9U) - [Arroy](https://github.com/meilisearch/arroy): [@&#8203;ptondereau](https://github.com/ptondereau) - [Charabia](https://github.com/meilisearch/charabia): [@&#8203;NarHakobyan](https://github.com/NarHakobyan), [@&#8203;mosuka](https://github.com/mosuka) </details> --- ### Configuration 📅 **Schedule**: 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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjkuMSIsInVwZGF0ZWRJblZlciI6IjQyLjUwLjAiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==-->
Update getmeili/meilisearch Docker tag to v1.24.0
All checks were successful
/ terraform (push) Successful in 59s
/ ansible (push) Successful in 2m14s
f4462d07ce
renovate force-pushed renovate/getmeili-meilisearch-1.x from f4462d07ce
All checks were successful
/ terraform (push) Successful in 59s
/ ansible (push) Successful in 2m14s
to d88272f9f3
Some checks failed
/ terraform (push) Successful in 2m12s
/ ansible (push) Failing after 3m24s
2025-11-10 20:00:16 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.24.0 to Update getmeili/meilisearch Docker tag to v1.25.0 2025-11-10 20:00:17 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from d88272f9f3
Some checks failed
/ terraform (push) Successful in 2m12s
/ ansible (push) Failing after 3m24s
to d897a7c843
Some checks failed
/ terraform (push) Failing after 3m26s
/ ansible (push) Failing after 3m31s
2025-11-17 12:00:18 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.25.0 to Update getmeili/meilisearch Docker tag to v1.26.0 2025-11-17 12:00:18 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from d897a7c843
Some checks failed
/ terraform (push) Failing after 3m26s
/ ansible (push) Failing after 3m31s
to c49ea78d00
Some checks failed
/ terraform (push) Failing after 3m8s
/ ansible (push) Failing after 3m37s
2025-11-24 16:00:18 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.26.0 to Update getmeili/meilisearch Docker tag to v1.27.0 2025-11-24 16:00:19 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from c49ea78d00
Some checks failed
/ terraform (push) Failing after 3m8s
/ ansible (push) Failing after 3m37s
to 528ac4b28d
Some checks failed
/ ansible (push) Failing after 3m7s
/ terraform (push) Failing after 17s
2025-12-01 14:00:26 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.27.0 to Update getmeili/meilisearch Docker tag to v1.28.0 2025-12-01 14:00:26 +00:00
renovate changed title from Update getmeili/meilisearch Docker tag to v1.28.0 to Update getmeili/meilisearch Docker tag to v1.28.1 2025-12-01 18:00:24 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from 528ac4b28d
Some checks failed
/ ansible (push) Failing after 3m7s
/ terraform (push) Failing after 17s
to 9b548f1439
Some checks failed
/ ansible (push) Failing after 57s
/ terraform (push) Failing after 14s
2025-12-01 18:00:26 +00:00
Compare
renovate force-pushed renovate/getmeili-meilisearch-1.x from 9b548f1439
Some checks failed
/ ansible (push) Failing after 57s
/ terraform (push) Failing after 14s
to 351c097219
All checks were successful
/ terraform (push) Successful in 1m2s
/ ansible (push) Successful in 2m20s
2025-12-03 16:00:18 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.28.1 to Update getmeili/meilisearch Docker tag to v1.28.2 2025-12-03 16:00:19 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from 351c097219
All checks were successful
/ terraform (push) Successful in 1m2s
/ ansible (push) Successful in 2m20s
to 3fc45ed6d6
All checks were successful
/ terraform (push) Successful in 1m35s
/ ansible (push) Successful in 2m37s
2025-12-08 10:00:43 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.28.2 to Update getmeili/meilisearch Docker tag to v1.29.0 2025-12-08 10:00:47 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from 3fc45ed6d6
All checks were successful
/ terraform (push) Successful in 1m35s
/ ansible (push) Successful in 2m37s
to 909843f299
All checks were successful
/ terraform (push) Successful in 1m0s
/ ansible (push) Successful in 2m4s
2025-12-15 14:00:16 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.29.0 to Update getmeili/meilisearch Docker tag to v1.30.0 2025-12-15 14:00:17 +00:00
renovate force-pushed renovate/getmeili-meilisearch-1.x from 909843f299
All checks were successful
/ terraform (push) Successful in 1m0s
/ ansible (push) Successful in 2m4s
to 5477eed35c
All checks were successful
/ terraform (push) Successful in 58s
/ ansible (push) Successful in 2m6s
2025-12-18 18:00:16 +00:00
Compare
renovate changed title from Update getmeili/meilisearch Docker tag to v1.30.0 to Update getmeili/meilisearch Docker tag to v1.30.1 2025-12-18 18:00:16 +00:00
All checks were successful
/ terraform (push) Successful in 58s
/ ansible (push) Successful in 2m6s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/getmeili-meilisearch-1.x:renovate/getmeili-meilisearch-1.x
git switch renovate/getmeili-meilisearch-1.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/getmeili-meilisearch-1.x
git switch renovate/getmeili-meilisearch-1.x
git rebase master
git switch master
git merge --ff-only renovate/getmeili-meilisearch-1.x
git switch renovate/getmeili-meilisearch-1.x
git rebase master
git switch master
git merge --no-ff renovate/getmeili-meilisearch-1.x
git switch master
git merge --squash renovate/getmeili-meilisearch-1.x
git switch master
git merge --ff-only renovate/getmeili-meilisearch-1.x
git switch master
git merge renovate/getmeili-meilisearch-1.x
git push origin master
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
systems/infrastructure!275
No description provided.