Meilisearch vs Manticore: Setting the Record Straight
Meilisearch vs Manticore: Setting the Record Straight
Author: Dmitrii Kuzmenkov<br>Published: Jul 23, 2026 - 14 Min read
A few days ago, Meilisearch published a comparison of Meilisearch and Manticore Search<br>. We like comparisons — we published our own<br>back in 2023, with benchmarks you can reproduce. And to be fair, parts of the Meilisearch's comparison are accurate and even generous toward Manticore.<br>But several claims about Manticore are outdated or simply not what you observe when you run the current version. So instead of arguing, we did what we always do: spun up the latest versions of both engines (Manticore Search 28.4.4 and Meilisearch 1.41/1.48) and tested the claims. Every command and response below is real — feel free to copy-paste and check us.<br>"Full-text search and real-time analytics" — that's maybe 1% of it<br>The article introduces Manticore like this:<br>Manticore Search is an open-source search engine built as a continuation of Sphinx, improving its functionality with full-text search and real-time analytics.
Sphinx already was full-text search, and real-time analytics is a small slice of what's been added since. Here's what "improving its functionality" actually looks like over the years:<br>RT mode — Sphinx had RT indexes, but now the whole engine runs without config files: CREATE TABLE, insert, and search on the fly<br>Replication — Galera-based synchronous cluster replication<br>A full HTTP JSON API — nearly everything SQL can do, plus Elasticsearch-compatible bulk endpoints<br>Auto-schema — insert data without creating a table first<br>Vector search with auto-embeddings<br>, quantization<br>, and filtered KNN<br>Hybrid search — full-text + semantic fused with Reciprocal Rank Fusion in one query<br>Fuzzy search<br>and autocomplete — typo tolerance, keyboard-layout awareness, suggestions<br>Columnar storage and secondary indexes — for datasets larger than RAM<br>Sharded tables, authentication, and conversational search<br>Kafka integration<br>, Kibana<br>and Grafana<br>support, an MCP server<br>for AI assistants<br>"Sphinx plus real-time analytics" undersells that by a wide margin.<br>"Complex setup" and "advanced customization"? Let's count commands<br>The article's verdict on Manticore:<br>Best for: Large-scale projects and teams that need advanced customization, SQL familiarity, and high-performance querying at scale.
And among the cons: "Complex setup: Initial configuration and tuning can be time-consuming."<br>Here is the entire "complex setup" of Manticore, from zero to searching — three commands, no config files, no schema:<br>1. Install (and start — the one-line installer<br>launches the service too):<br>curl https://manticoresearch.com | sh
2. Insert a document. Note there's no table yet — auto-schema<br>creates it from the data:<br>curl -s 0:9308/insert -d '{<br>"table": "products",<br>"doc": {"title": "yellow travel backpack", "price": 4990, "color": "yellow"}<br>}' | jq
"table": "products",<br>"id": 8938969113712132097,<br>"created": true,<br>"result": "created",<br>"status": 201
3. Search — full-text match plus a filter on a numeric field, immediately:<br>curl -s 0:9308/search -d '{<br>"table": "products",<br>"query": {"bool": {"must": [<br>{"match": {"*": "backpack"}},<br>{"range": {"price": {"lt": 6000}}}<br>]}}<br>}' | jq
"took": 0,<br>"timed_out": false,<br>"hits": {<br>"total": 1,<br>"total_relation": "eq",<br>"hits": [<br>"_id": 8938969113712132097,<br>"_score": 1356,<br>"_source": {<br>"title": "yellow travel backpack",<br>"color": "yellow",<br>"price": 4990
Everything is queryable the moment it lands in the table: text fields are full-text searchable — per-field too, e.g. {"match": {"color": "yellow"}} — and attribute fields like price are filterable, sortable, groupable, and facetable, with no declarations and no re-indexing. Here's the schema Manticore inferred on its own:<br>+-------+--------+----------------+<br>| Field | Type | Properties |<br>+-------+--------+----------------+<br>| id | bigint | |<br>| title | text | indexed stored |<br>| color | text | indexed stored |<br>| price | uint | |<br>+-------+--------+----------------+<br>Now the same task in Meilisearch (we tested both the latest Docker tag, v1.41.0, and the newest release, v1.48.3). Meilisearch's installer downloads a binary into the current directory, which you then run yourself — and in production mode you'll also need to configure a master key before it starts. Adding documents and searching is just as easy as in Manticore — credit where due. But then you try to filter:<br>curl -s -X POST localhost:7700/indexes/products/search -H "Content-Type: application/json" \<br>-d '{"q": "backpack", "filter": "price | jq
"message": "Index `products`: Attribute `price` is not filterable. This index does not have configured filterable attributes.",<br>"code": "invalid_search_filter",<br>"type": "invalid_request"
Since we were re-checking everything for this post anyway, here's precisely what does and doesn't work out of the box in Meilisearch — each point verified against the docs and a live instance:<br>Searching works immediately. By default...