Core
Guides v2.x
2

Kuzzle 2.61 #

Status: in beta since 2026-10-30 (2.61.0-beta.1, then 2.61.0-beta.2).

The GitHub release notes list every commit. This page tells you what changes for you. For what to check before you upgrade, read Upgrading from 2.60.

In short #

2.61 opens Kuzzle to other storage engines. A storage engine can now come as a separate npm package, a storage driver, that you install next to Kuzzle and name in the configuration. Elasticsearch 7 and 8 keep working exactly as before: they are now Kuzzle's built-in drivers, shipped as packages Kuzzle installs with itself.

What you need to do #

Nothing. An Elasticsearch 7 or 8 setup needs no change, in its configuration or its dependencies.

What's new #

  • Storage drivers. Set services.storageEngine.driver to the name of a driver package to run Kuzzle on another storage engine. Kuzzle checks the driver at startup and refuses to start if it is missing, invalid or not made for this Kuzzle version. The API does not change: queries and mappings are still written in the Elasticsearch format. Read Storage Drivers.
  • Capabilities. A driver may not support every feature (aggregations, mapping changes, statistics, update by query). A request needing one it does not support is rejected with a clear services.storage_driver.unsupported_capability error. The built-in drivers support them all.
  • Same driver on every cluster node. A node running another driver, or another version of it, than the rest of the cluster is refused when it joins, with a cluster.join.storage_driver_mismatch error. Nodes running the built-in Elasticsearch drivers are not compared, so an Elasticsearch 7 or 8 cluster joins as before.
  • Elasticsearch 7 and 8 as packages (2.61.0-beta.2). The built-in drivers now live in their own packages, kuzzle-storage-es-7 and kuzzle-storage-es-8, which Kuzzle depends on and installs with itself: same code, same behavior, still selected by majorVersion. Your package.json does not change.
  • Elasticsearch 9. Install the driver kuzzle-storage-es-9 (in beta) next to Kuzzle and set services.storageEngine.driver to "kuzzle-storage-es-9". It is Kuzzle's Elasticsearch 8 driver on the Elasticsearch 9 client: same mappings, same queries, same errors.
  • majorVersion is deprecated, in the documentation only: it keeps working unchanged in Kuzzle 2, and Kuzzle 3 will select the storage engine with driver alone. Kuzzle warns at startup only if your configuration sets both driver and majorVersion, since majorVersion is then ignored.
  • For driver authors. kuzzle exports what a driver needs: the StorageDriver contract and its types, a conformance kit (describeStorageDriverConformance) that tests a driver against its real engine, and storageError, so that a driver returns the same errors as Kuzzle. Read the new Write storage drivers guide.
  • Drivers documentation. Each official driver has its own documentation (install, configuration, TypeScript, compatibility, troubleshooting) in the new Drivers section.

What's fixed #

  • A node joining a cluster could still list an index or a collection that another node had deleted before it joined, and keep a collection lock that was already released. It now replaces its cache with what the storage holds when it loads it.

Under the hood #

  • kuzzle depends on kuzzle-storage-es-7 and kuzzle-storage-es-8 (1.0.0-beta.1), at pinned versions: a new version of a built-in driver reaches you with a Kuzzle release.