v1.51.0

daydreamlive/DEMONv1.51.0Jul 27, 2026by Kerollmops

AI Summary

Meilisearch v1.51.0 introduces a new filter condition for Dynamic Search Rules, significantly accelerates search performance by minimizing internal disk reads, and stabilizes the upgrade process. This release also removes several outdated experimental features to streamline the codebase.

Key Highlights

  • New `filter` condition for Dynamic Search Rules allows rules to activate only when specific facet values are present.
  • Search speed improved up to 5.4x by drastically reducing the number of times data is retrieved from disk.
  • Upgrade process stabilized with the renaming of `--experimental-dumpless-upgrade` to `--upgrade-db`.
  • Removed three outdated experimental flags including `--experimental-replication-parameters` and `--experimental-no-snapshot-compaction`.

Breaking Changes

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

New Features

  • Added `filter` condition to Dynamic Search Rules (DSR) with a `values` JSON object for facet matching.
  • Added `lastUpdatedAt` field to Dynamic Search Rule API responses to track rule modification times.
  • Rules are now sorted by most recently updated first in API listings.
  • Added new environment variables to control DSR fuel behavior (filter_fuel, or_fuel, etc.).

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