Latin America's Premier Online Marketplace
Based in Argentina, MercadoLibre is Latin America's largest online marketplace, eBay's Latin America sales partner, and operates similarly to eBay, bringing millions of buyers and sellers together. The company has 4 million active sellers with 20 million live product listings.
"Before using Elasticsearch, we used a Redis database," explains Federico Ocampo, Project Leader at MercadoLibre. "But Redis is not meant to be a search engine. We had to reindex all of our data every time we wanted to add a new attribute. Redis did not scale and it did not provide the high availability we required."
Empowering Millions of Sellers
Today, MercadoLibre uses Elasticsearch for the "My Account" section of the site, where sellers manage their products for sale. When sellers log into the system, they can view a list of every product they are selling – called "My Items" – which is populated and searchable via Elasticsearch. From that list, the seller can edit attributes, check quantities and change prices.
Sometimes a seller must search through thousands of items. A typical MercadoLibre user will sell a few thousand products, but some sell as many as 50,000 items. Elasticsearch enables sellers to find products by filtering based on a variety of parameters, such as product type, price, quantity or date the item was published.
"The My Account section of the system is critical," says Ocampo. "Without the ability to search through their items, sellers would not be able to view their products, add new products, make changes to the descriptions, and adjust prices – sellers would not be able to sell. The entire system would be paralyzed if we did not have an easy way for sellers to search and manage their items."
For a user selling thousands of products, search is obviously essential. But even the user selling only a few items still depends on Elasticsearch in order to manage those products. Elasticsearch not only empowers sellers to manage thousands of products, but also helps millions of users conduct their business regardless of the number of product listings. The company's revenue depends directly upon the seller's ability to manage the products they are selling, and Elasticsearch makes this possible.
All MercadoLibre front ends call APIs on the backend. The APIs are available to anyone who wants to build an application based on MercadoLibre. These APIs are can be used for many different purposes, both internal and external. Because Elasticsearch worked so well, MercadoLibre began to use it in other ways via APIs. First, they implemented an API over Elasticsearch to help users to search through questions asked by buyers and answers provided by sellers – the key method of communication between buyers and sellers prior to a sale. Then, they created a second API that helps users to search orders.
"We develop our search APIs very quickly and easily with Elasticsearch," says Silvina Lucero, Senior Software Engineer at MercadoLibre. " These were two new projects with very different requirements and Elasticsearch has adapted well to both of them."
Elasticsearch Delivers Real-Time Search Performance
"Real-time search is important for us, because as soon as the seller publishes a new item, they want it to appear in the list," Ocampo explains. "So we need that process to be as quick as possible. With Elasticsearch, items are searchable within one or two seconds after being published."
The performance of query response is also important to MercadoLibre. The My Account search receives 6,000 requests per minute, while the other functions receive up to 2,000 requests per minute, and all the results must be returned quickly because e-commerce users have low tolerance for performance issues.
An Elasticsearch feature called "Custom Routing" enables MercadoLibre to route user data to a single shard. Under normal operation, searches in Elasticsearch are broadcast to all shards in the index. Multi-tenant indices often contain many shards to support future growth, but this can impact query latency due to the overhead of searching many, many shards simultaneously.