v1.51.0

rapidaai/voice-aiv1.51.0Jul 27, 2026by Kerollmops

AI Summary

This release enhances Dynamic Search Rules (DSRs) with new filter conditions and improves search performance, while stabilizing the dumpless upgrade process.

Key Highlights

  • DSRs now support a new `filter` condition and include a `lastUpdatedAt` field.
  • Search speed has improved significantly (up to 5.4x) by reducing disk reads.
  • The `--experimental-dumpless-upgrade` flag has been renamed to `--upgrade-db`.

Breaking Changes

  • Renamed `--experimental-dumpless-upgrade` to `--upgrade-db`.
  • Removed experimental flags: `--experimental-replication-parameters`, `--experimental-no-edition-2024-for-dumps`, and `--experimental-no-snapshot-compaction`.

New Features

  • New environment variables for controlling DSR fuel behavior (`MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_*`).

Full Release Notes

### ✨ Enhancement

- **Add filter condition to DSRs** by @dureuill in https://github.com/meilisearch/meilisearch/pull/6505
    #### New `filter` rule activation condition

	Dynamic search rules (DSR) can now declare a new `filter` condition: it contains a single `values` key, whose value is a JSON object.
	The keys of this `values` JSON object are the facet names (e.g., `color`, `genres`, ...), while their values are the values that a filter must resolve to for these facets, so that the rule is active.
	
	<details>
	
	<summary>Example of sending a DSR with a filter condition</summary>
	
	
	```jsonc
	// PATCH /dynamic-search-rules/test-filter
	
	{
	  "conditions": {
	    "filter": {
	      "values": {
	        "color": "red",
	        "category": "shirt"
	      }
	    }
	  },
	  "actions": [
	    {
	      "selector": { "id": "red shirt on sales" },
	      "action": { "type": "pin", "position": 0 }
	    }
	  ]
	}
	```
	
	
	</details>
	
	<details>
	<summary>Example of search query that enables the DSR above</summary>
	
	```jsonc
	{
	  "filter": "(category = shirt AND color = red) OR (category = jeans AND color = blue)"
	}
	```
	
	</details>
	
	Note that the filter only needs to have one branch resolving to all the facet values declared in the rule for the rule to be active.
	
	#### New `lastUpdatedAt` field
	
	Dynamic search rules returned by `GET /dynamic-search-rules/{:ruleUid}` and `POST /dynamic-search-rules` contain an additional `lastUpdatedAt` field. 
	
	This field is automatically updated with the `enqueuedAt` value of the last task that modified the rule.
	
	#### Rules are listed with the most recently updated first
	
	`POST /dynamic-search-rules` now lists rules in descending `lastUpdatedAt` order, meaning that the most recently updated rules will be listed first.
	
	#### New environment variables
	
	New environment variables are defined to control the behavior of the DSR fuel:
	
	- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_FUEL` (in range 0..4294967296): controls how many filter constraint combinations Meilisearch will attempt to resolve at search time before giving up and applying partial rules.
	- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_OR_FUEL` (in range 0..65536): controls how many filter disjunctions Meilisearch will build when turning a filter to its canonical shape
	- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_AND_FUEL` (in range 0..65536): controls how many filter conjunctions Meilisearch will build in total when turning a filter to its canonical shape
	- `MEILI_EXPERIMENTAL_DSR_FUEL_FILTER_DEPTH_FUEL` (in range 0..256): controls the maximum recursive depth that Meilisearch allows when turning a filter to its canonical shape

- **Speed up search requests** by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6528
    Improves Meilisearch search speed by avoiding unnecessary internal work. We drastically reduced the number of times we retrieve data from disk to a single time across the whole search pipeline. This improvement will have the greatest effect on datasets with a large number of distinct fields across documents. We have seen search speeds up to 5.4x on a dataset with more than 14k different fields.

- **Stabilize dumpless upgrade** by @curquiza in https://github.com/meilisearch/meilisearch/pull/6486
    
    ⚠️ Breaking change following the stabilization of an experimental feature ⚠️
    
    The flag `—-experimental-dumpless-upgrade` is renamed `—-upgrade-db`, keeping the exact same behavior.
    
- **Remove unused experimental features** by @curquiza in https://github.com/meilisearch/meilisearch/pull/6489
    
    ⚠️ Breaking change: removing the following experimental features ⚠️
    
    - [Replication parameters](https://github.com/orgs/meilisearch/discussions/725): removing `--experimental-replication-parameters` because outdated. We now have another way to handle replication.
    - [Import dumps with old document indexer fallback](https://github.com/orgs/meilisearch/discussions/851): removing `--experimental-no-edition-2024-for-dumps`. This flag existed to prevent bugs related to our new indexer, which is now stable.
    - [No snapshot compression](https://github.com/orgs/meilisearch/discussions/833): removing `--experimental-no-snapshot-compaction` because it's not useful anymore.

### 🪲 Bug fixes

- Make sure legacy attribute patterns work by @Kerollmops in https://github.com/meilisearch/meilisearch/pull/6531
    - Missing support for the shorthand filterable attributes syntax

### 🔩 Miscellaneous

- Add missing logs in multisearch by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6529
- Docs: Fix stale pre-v1.0 supported versions statement by @vishnujayvel in https://github.com/meilisearch/meilisearch/pull/6524
- Bump sigstore/cosign-installer from 4.1.1 to 4.1.2 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6427
- Bump actions/github-script from 7 to 9 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6425
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in https://github.com/meilisearch/meilisearch/pull/6428

## New Contributors
- @vishnujayvel made their first contribution in https://github.com/meilisearch/meilisearch/pull/6524