Go to homeMeilisearch's logo
Back to articles
25 Mar 2019

MeiliES - Event sourcing in Rust

Thomas Payet
Thomas PayetCo-founder & COO @ Meilisearch@totolapaille
MeiliES - Event sourcing in Rust

Today we are releasing MeiliES, our event store which is fully implemented in Rust.

Event sourcing is a way to "Capture all changes to an application state as a sequence of events" as Martin Fowler describes it. The first purpose of the server is to publish events of a stream to subscribed clients. A client can also specify from which event number it wants to read, therefore it is possible to recover from a crash by rebuilding a state with new events only.

Since a message queue is not made for event-sourcing, there are few available applications for event sourcing: the main option being EventStore, an event sourcing database made in C#.
So we began using EventStore for our event sourcing needs and ran against some troubles:

  • Portability: EventStore is built with C# and uses mono, making it quite difficult to install and run on UNIX
  • Support: We asked for information about EventStore commercial support and never got any response
  • Stability: the Rust client is not production-ready, and despite making some merge-requests there was still a lot to do while many of the available features were not useful to us.

So we decided to implement our own event store to resolve these issues.

MeiliES is an Event Sourcing database that uses the RESP (REdis Serialization Protocol) to communicate. We use the Redis protocol to simplify clients implementation. The portability problematics are resolved by using a full Rust implementation (we are using Sled as internal storage).

Installation is as simple as doing a cargo build --release. If you do not want to clone the repository you can download the binaries from the Azure pipeline or run it using docker docker run -p 6480:6480 --rm getmeili/meilies:latest.

If you have any questions regarding MeiliES, you can tweet @meilisearch or make an issue on GitHub 🎉

Meilisearch indexes embeddings 7x faster with binary quantization

Meilisearch indexes embeddings 7x faster with binary quantization

By implementing binary quantization with the vector store Arroy, significant reductions in disk space usage and indexing time for large embeddings have been achieved while maintaining search relevance and efficiency.

Tamo null
Tamo null10 Mar 2025
Meilisearch is too slow

Meilisearch is too slow

In this blog post, we explore the enhancements needed for Meilisearch's document indexer. We'll discuss the current indexing engine, its drawbacks, and new techniques to optimize performance.

Clément Renault
Clément Renault07 Mar 2025
Introducing Meilisearch's next-generation indexer: 4x faster updates, 30% less storage

Introducing Meilisearch's next-generation indexer: 4x faster updates, 30% less storage

Indexer edition 2024 revolutionizes search performance with parallel processing, optimized RAM usage, and enhanced observability. See what's new in our latest release.

Louis Dureuil
Louis Dureuil26 Feb 2025