Finally Phase 1 of my product is ready and deployed for UAT, so thought of celebrating it by writing about one of my favorite topic – ElasticSearch. A lot of time I’m asked why to choose ElasticSearch for one’s search needs. So I thought why not answer it once and for all.
What is ElasticSearch
ElasticSearch is a distributed search & analytical engine built on top of Lucene. It supports multi-tenancy out of the box. It supports JSON and hence is schema free. Supports Restful API and is open source. Click here for more info
In this post I’m not really comparing ElasticSearch with Solr or any other Search & Analysis technology but am listing down salient points offered by ElasticSearch.
So moving on, at my last organization I was tasked to create a unified Search solution for the whole platform. So this post really lists down my reasons to choose ElasticSearch.
- Distributed computing
ElasticSearch was built grounds up keeping with distributed computing in mind and not an afterthought. This makes it easily scalable. Creating a cluster, adding more nodes, shards, master selection etc. is very easy.
- High availability
ElasticSearch handles tracking node addition or failure automatically, new master node selection and data updates across all nodes. All this ensures ElasticSearch cluster is highly available and data is accessible.
- Supports Multitenancy
ElasticSearch also supports multitnenancy out of the box. Multiple indexes serving as different tenants can be created in a single cluster or node.
- Search Capabilities
ElasticSearch is built on top of Lucene and it unleashes all its capabilities like accurate and efficient search algorithms, ranking search results, multiple query types such as phrase queries, wildcard queries, range queries, etc.
- Powerful Query Language
ElasticSearch has a very powerful & flexible query language called Query DSL (Domain Specific Language). Using Query DSL we can create really complex queries to retrieving and filtering data.
- JSON Support
All Data is indexed as JSON. ES automatically detects the structure and indexes the data accordingly. It supports nested JSON entities as well. Although it supports custom mapping but you do not need any specific mapping to get started, ES does everything for you.
- Developer support
ElasticSearch has Restful API which support all (I did not come across any while building my search solution) of the action. Also, most of the prominent development languages have native libraries to interact with ElasticSearch. For example .Net has NEST & ElasticSearch.Net clients. Click here for all the supported languages
P.S. For any errata/suggestions/comments/questions please use the comments section below