TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

MeiliSearch: Zero-config alternative to Elasticsearch, made in Rust

437 pointsby qdequelenabout 5 years ago

28 comments

pqdbrabout 5 years ago
I&#x27;m impressed.<p>I have a database with 15k documents, each with around 70 pages of text, HTML formatted.<p>I&#x27;m using ElasticSearch currently, with the Searchkick gem.<p>30 min playing with MeiliSearch. So far:<p>- Blazing fast to index, like 10x more performant than using ElasticSearch &#x2F; Searchkick;<p>- Blazing fast to search, at least 3x faster in all my random tests so far;<p>- Literally zero config;<p>- Uses 140MB of RAM currently, while in my experience ElasticSearch would crash with anything less than 1GB, and needs at least 1.5GB to be usable in production.
评论 #22690060 未加载
评论 #22690048 未加载
评论 #22690611 未加载
评论 #22690178 未加载
评论 #22690457 未加载
heipeiabout 5 years ago
I know the project doesn&#x27;t claim it, but the title somewhat implies this: I honestly don&#x27;t understand people claiming ElasticSearch is hard to operate, especially not at small scales. If anything, ElasticSearch for me has been one of the easiest pieces of infrastructure to operate, for me pretty much &quot;zero-config&quot;. Let me elaborate: You can run ElasticSearch via Docker command-line, if you want a cluster you just supply IPs of the other nodes. Then you start indexing documents with simple HTTP calls. You can add or remove nodes at any time and don&#x27;t have to do anything but to start another ElasticSearch instance. If you run out of space or performance just start another node. Everything needed for management, indexing, search is available through HTTP APIs, no tools needed.<p>Clustered ElasticSearch has been rock-solid for me and I&#x27;ve used it in anger many times. The level of maintenance needed is close to zero, both initially and long-term. Compare that with the abysmal experience of setting up a sharded MongoDB cluster for example...<p>Please enlighten me how ElasticSearch is &quot;a lot of work to operate&quot; (heard that one multiple times), and what you&#x27;re comparing it to.
评论 #22689206 未加载
评论 #22688247 未加载
评论 #22688992 未加载
评论 #22692365 未加载
评论 #22690753 未加载
评论 #22688791 未加载
评论 #22688266 未加载
ghhabout 5 years ago
I wanted to mention Sonic [1] as another lightweight document indexing alternative written in rust, when I found MeiliSearch to provide a thoughtful comparison page [2]<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;valeriansaliou&#x2F;sonic" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;valeriansaliou&#x2F;sonic</a><p>[2] <a href="https:&#x2F;&#x2F;docs.meilisearch.com&#x2F;resources&#x2F;comparison_to_alternatives.html#comparisons" rel="nofollow">https:&#x2F;&#x2F;docs.meilisearch.com&#x2F;resources&#x2F;comparison_to_alterna...</a>
beagle3about 5 years ago
Mostly &quot;made in Rust&quot;, but from the github readme[0] &quot;MeiliSearch uses LMDB as the internal key-value store. The key-value store allows us to handle updates and queries with small memory and CPU overheads.&quot;; so a lot of the credit goes to LMDB, and safety implied by &quot;made in Rust&quot; is not, in fact, guaranteed.<p>Not that I&#x27;m complaining - I love LMDB, and it&#x27;s been rock solid and bug free in my experience (thanks, Howard!) - but it&#x27;s low level C, not rust, and if you expect the certainty that Rust provides w.r.t to security, race conditions and leaks, be aware that you are not completely getting it.<p>But other than that: Thanks! This looks like a great project!<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch#how-it-works" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch#how-it-works</a>
评论 #22690220 未加载
评论 #22728740 未加载
ghayesabout 5 years ago
The goal of ElasticSearch, I always thought, was that it scales horizontally and can handle the loss of multiple nodes without availability- or data-loss. It&#x27;s interesting to build a single-server replacement, and this can likely work for many use-cases, but it&#x27;s definitely a different approach from ElasticSearch itself.
评论 #22687007 未加载
MuffinFlavoredabout 5 years ago
The real power of Elasticsearch for me is the ability to filter logs by:<p>1. exact match this nested JSON field (with support for lists of values)<p>2. negative match this nested JSON field (with support for lists of values)<p>coupled with the ability to filter by &quot;timeframe&quot;, then pump it through to visualizations (tables&#x2F;graphs) in Kibana<p>MeiliSearch would be cool if it spoke the API Kibana expects from Elasticsearch
评论 #22696334 未加载
bryanrasmussenabout 5 years ago
ok I just looked through things a bit but the phrase 0 config worries me - first off I could conceivably run ElasticSearch with 0 configuration but then it needs to make decisions as to what types things are, and how things should be analyzed, and sometimes those decisions are not what I want.<p>Often ElasticSearch makes a mistake in typing because the programmer has made a mistake in data format, if you fixed that mistake your data would now not fit the format that ElasticSearch has chosen for it (actually don&#x27;t know if this is still a problem because it has been years since I have ran without all my fields being mapped first) but actually don&#x27;t see how it couldn&#x27;t be a problem.<p>so theoretically if you didn&#x27;t want to go through the trouble of defining a wrapping you could just reindex all your data fixed in such a way that ElasticSearch will choose a better type for individual fields but why would you do this?<p>And I mean what does MelliSearch do? I wonder - because looking through this code here <a href="https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch&#x2F;blob&#x2F;master&#x2F;meilisearch-schema&#x2F;src&#x2F;fields_map.rs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch&#x2F;blob&#x2F;master&#x2F;meili...</a> (and not being a rust guy my understanding of it is probably off) but it seems like maybe it is no configuration because it expects you to follow its semantics. Which to be fair lots of things do, at the base level, everything has a title, description, date.<p>But if I have a domain with different or probably more advanced semantics what happens?<p>Search Engines are generally configurable because you want to add other fields and rank hits in those fields higher than other things, or maybe do a specific search that only targets those fields - like say Brands based search.<p>on preview: lots of other people with similar views it seems, I got maybe a bit ranty just because the title sets me off when it just is so wrong it even seems like lying.
manigandhamabout 5 years ago
Awesome, glad to see all the competition in the search space now. There are other projects like Sonic, Tantivy, Toshi and more that have more functionality if you need alternatives.<p>Here&#x27;s a public list of search projects (in rust, c, go): <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;manigandham&#x2F;58320ddb24fed654b57b4ba22aceae25" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;manigandham&#x2F;58320ddb24fed654b57b4ba2...</a>
评论 #22691715 未加载
评论 #22691113 未加载
seemslegitabout 5 years ago
Hardly an &quot;alternative to Elastic search&quot; if only because the later is scalable beyond a single machine.<p>This overhyped description coupled with on-by-default analytics suggests to me MeiliSearch should be dismissed regardless of potential usefulness or technical merit.
评论 #22687405 未加载
time0utabout 5 years ago
Nice. This looks promising. Very clean API. I like the focus on a narrow use case.<p>Do you have any information on security topics like using TLS, client authentication, etc?
评论 #22688916 未加载
otterleyabout 5 years ago
MeiliSearch appears to be more of an alternative to Lucene than it is to Elasticsearch. Lucene is the search engine that runs on a single instance; ES is the horizontally-scalable distribution and aggregation layer atop the instances. Absent a similar aggregation layer, MeiliSearch isn&#x27;t &quot;elastic&quot; as the comparison implies.
评论 #22688351 未加载
评论 #22688829 未加载
nreeceabout 5 years ago
Looks pretty good. The single filter approach is restrictive though.<p>We&#x27;re currently leaning towards Manticore Search[1], which is a fork of Sphinx Search[2].<p>[1] <a href="https:&#x2F;&#x2F;manticoresearch.com" rel="nofollow">https:&#x2F;&#x2F;manticoresearch.com</a> [2] <a href="http:&#x2F;&#x2F;sphinxsearch.com" rel="nofollow">http:&#x2F;&#x2F;sphinxsearch.com</a>
评论 #22691742 未加载
Bedon292about 5 years ago
While this might be an alternative for that one specific use case (search bar), it does not feel like a viable alternative to ES. I am sure it is great at that specific case, and don&#x27;t want to knock them on that. But, I have never used ES for a simple search like they are. when I use ES, I want to store billions of records redundantly and search them by text, time, and&#x2F;or location. And then create visualizations with the results.<p>When I first read the title I thought it might be a Rust based Lucene engine or something, and thought that would be pretty cool. Though no idea how that would work. On its own, this is a pretty nifty little tool, however I think the framing as an ES alternative is what feels wrong to me, and apparently others in the comments as well.
评论 #22687468 未加载
评论 #22691980 未加载
评论 #22687542 未加载
daloreabout 5 years ago
Wow to see this popup is strange as I was just implementing this yesterday.<p>It is blindingly fast and easy to setup.
mleonhardabout 5 years ago
&gt; MeiliSearch can serve multiple indexes, with different kinds of documents, therefore, it is required to create the index before sending documents to it.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch#create-an-index-and-upload-some-documents" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;meilisearch&#x2F;MeiliSearch#create-an-index-a...</a><p>Indexes are config. This is not really zero-config if you require API calls before it can receive data.<p>Also, there&#x27;s nothing about TLS or access control. These will be required for any production deployment. At the minimum, let us specify a TLS key.pem and cert.pem file and create write-only and read-only access tokens.
karterkabout 5 years ago
If you are looking for alternatives, check out Typesense as well:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;typesense&#x2F;typesense" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;typesense&#x2F;typesense</a>
maxpertabout 5 years ago
How does it compare to Sonic <a href="https:&#x2F;&#x2F;github.com&#x2F;valeriansaliou&#x2F;sonic" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;valeriansaliou&#x2F;sonic</a>
throw03172019about 5 years ago
Are the documents stored on disk or only in memory?
评论 #22687174 未加载
niyazpkabout 5 years ago
Does anyone know if this supports bulk indexing? My team has a lot of data in S3 in parquet format. (We could change the format to something else if that helps).<p>It would be really nice to be able to point tools like MeilliSearch or ElasticSearch to a data location and have it index all the data without me writing code to send individual records to the API.
评论 #22695808 未加载
dzongaabout 5 years ago
looks really easy to use. will use this instead of resorting to Postgres full text search for my next app(s)
bradrobertsonabout 5 years ago
Looks promising! Are there any docs coming on a production ready setup? Reading below it looks like you&#x27;re working on high availability, but even in the single machine scenario, do you have recommendations for persistence, fault tolerance etc?
评论 #22714290 未加载
throw03172019about 5 years ago
We use Algolia and use the public API keys with search filters encoded so they can only search their data (I.e. account_id:123)<p>Is there anything similar here? Otherwise all the queries need to go through our servers first to ensure the filter is present.
评论 #22687758 未加载
udfalksoabout 5 years ago
Sounds more like a potential alternative to Sphinx than Elastic Search.<p>sphinxsearch.com&#x2F;
eliseumdsabout 5 years ago
Pretty heavy user of ES here, and one cannot compare the two products.
评论 #22690332 未加载
评论 #22688551 未加载
kvzabout 5 years ago
Is there already a browser library that can talk to MeiliSearch?
评论 #22688901 未加载
dhruvkarabout 5 years ago
I&#x27;ve never used elasticsearch and only had a brief toy project with Algolia. The demo on the github repo looks awesome.<p>Can this run on top of my postgres database?
评论 #22696116 未加载
bberenbergabout 5 years ago
Does any tool in this category (This, Elastic, or whatever else) support something like permissions on a per document level?
评论 #22724986 未加载
social_quotientabout 5 years ago
Thanks for including performance metrics right up front!