- snikolaev parentGreat to hear! 16 years is impressive. Glad to see the new semantic features caught your eye — we're excited to keep improving the project.
- If your setup works fine and doesn't need any maintenance, there's really no reason to switch to something else. But once you upgrade to a newer version of Sphinx and it crashes, I personally feel more comfortable knowing I can report the issue on GitHub and expect it to be fixed eventually. Unfortunately, that's not how it works with Sphinx.
Speaking of features, both Sphinx (as a closed-source project) and Manticore (as an open-source project) have added some nice improvements during last years. But again, if you're happy with the 20-year-old version, there's probably nothing to worry about.
- Complex boolean queries work great. Manticore also supports over 20 full-text operators — a lot more than Elasticsearch. That's one reason it's popular in areas like patent and legal search, where strong full-text matching is especially important.
Custom script scoring is available - https://manual.manticoresearch.com/Extensions/UDFs_and_Plugi...
Vectors - yes. Recent blog post on it https://manticoresearch.com/blog/quantization/
Pipelined aggregations - no.
Nested documents - no, but Manticore supports INNER JOIN and LEFT JOIN.
- It's somewhat smaller, but I believe not 20 times smaller. Among the major features, probably only authentication and auto-sharding are missing. Both are already in progress. On the other hand, the main feature missing in Elasticsearch is proper SQL support, which many Manticore users really appreciate.
- Not every, but Kibana can be used with Manticore with some limitations - https://github.com/manticoresoftware/kibana-demo
- Thanks for sharing! What sets Manticore apart from Meilisearch and Elasticsearch is that it lets you configure tokenization at a low level by:
- choosing which characters should be treated as token characters, and using the rest as token separators
- defining "blend chars" — for example, the hyphen (-) could make sense as both a separator and a non-separator in your case
- or optionally adding it to the ignore_chars list
- there's also regexp_filter to process tokens when indexing and searching
That said, setting things like this up perfectly is always tricky with any search engine, because the words and punctuation in real data often don't follow regular patterns. It's especially difficult when you want to find "abc def" by "ab cd ef" which may be a common situation in your case.
- We made a blogpost "TF-IDF in a nutshell" - https://manticoresearch.com/blog/tf-idf-in-a-nutshell/
Manticore Search's query language is more expressive than Lucene's. While Lucene supports basic boolean logic, field search, phrase queries, wildcards, and proximity, Manticore adds many powerful operators. These include quorum matching (/N), strict word order (<<), NEAR/NOTNEAR proximity, MAYBE (soft OR), exact form (=word), position anchors (^word, word$), full regular expressions, and more. Manticore uses SQL-style syntax with a MATCH() clause for full-text search, making it easier to combine text search with filters and ranking.
- The speedup comes from a number of architectural and low-level performance optimizations in Manticore Search.
Manticore has a modern multithreading architecture with efficient query parallelization that fully utilizes all CPU cores. It supports real-time indexing - documents are searchable immediately after insertion, with no need to wait for flushes or refreshes.
It uses row-wise storage optimized for small to large datasets, and for even larger datasets that don’t fit into memory, there's support for columnar storage through the Manticore Columnar Library.
Secondary indexes are built automatically using the PGM-index (Piecewise Geometric Model index), which enables efficient filtering and sorting by mapping keys to their memory locations. The cost-based query optimizer uses statistics about the data to choose the most efficient execution plan for each query.
Manticore is SQL-first: SQL is its native syntax, and it speaks the MySQL protocol, so it works out of the box with MySQL clients.
It's written in C++, starts quickly, uses minimal RAM, and avoids garbage collection — which helps keep latencies low and stable even under load.
As for benchmarks, there's a growing collection of them at https://db-benchmarks.com, where Manticore is compared to Elasticsearch, MySQL, PostgreSQL, Meilisearch, Typesense, and others. The results are open and reproducible.
- Hi everyone — I'm one of the maintainers of Manticore Search. Huge thanks to @klaussilveira for submitting this — we really appreciate the interest and the thoughtful discussion here.
A few points that came up in the thread and are worth clarifying:
- We do get compared to Elasticsearch a lot. While we support some of its APIs, Manticore isn't a drop-in replacement. We've focused on performance, simplicity, and keeping things open-source without vendor lock-in. Our own SQL-based query language and REST endpoints are part of that philosophy. - @mdaniel was right to question the "drop-in" wording — that's not our goal. - As @sandstrom pointed out, tools like Typesense and Meilisearch are part of this evolving search space. We see Manticore fitting in where users want powerful full-text and vector search capabilities with lower resource overhead and SQL capabilities (we support JSON too though)
We'd love to hear from you: - What are your main use cases for search or log indexing? - Which Elasticsearch features (if any) are absolutely essential for you? - Are there performance comparisons or scaling challenges you'd like to see addressed?
Happy to answer any questions or dive deeper.
- The Manticore Search github repository calls it a "drop-in replacement for E in the ELK stack," not just a replacement for Elasticsearch. On https://manticoresearch.com/, it's described as an "Elasticsearch alternative," so the confusion is probably just here on HN :)
- 3 points
- 2 points
- 1 point
- 3 points
- 3 points
- This article may be more relevant https://manticoresearch.com/blog/github-semantic-search/
- 3 points
- Check out Manticore Search for your use case. It's open-source, cost-effective, and doesn't require keeping everything in memory.
Key points:
- Columnar Storage: Efficiently handles large datasets on disk, ideal for terabyte-scale data. It's not enabled by default but can be set up easily with "CREATE TABLE ... ENGINE='columnar'".
- Faceted Search: Probably easier than anywhere else with just "FACET <field name>" added to your "SELECT" query.
- MySQL Protocol and SQL Support: If you’re familiar with SQL and MySQL, it's easier to get started compared to other search engines.