Samiksha Jaiswal (Editor)

Elasticsearch

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Shay Banon

Written in
  
Java

Development status
  
Active

Operating system
  
Cross-platform

Elasticsearch

Stable release
  
5.2.2 / February 28, 2017; 6 days ago (2017-02-28)

Repository
  
github.com/elastic/elasticsearch

Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Official clients are available in Java, .NET (C#), Python, Groovy and many other languages. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene.

Contents

It is developed alongside a data collection and log parsing engine called Logstash, and an analytics and visualisation platform called Kibana. The three products are designed to be used as an integrated solution, referred to as the "ELK stack".

History

Shay Banon created the precursor to Elasticsearch, called Compass, in 2004. While thinking about the third version of Compass he realized that it would be necessary to rewrite big parts of Compass to "create a scalable search solution". So he created "a solution built from the ground up to be distributed" and used a common interface, JSON over HTTP, suitable for programming languages other than Java as well. Shay Banon released the first version of Elasticsearch in February 2010.

Elasticsearch BV was founded in 2012 to provide commercial services and products around Elasticsearch and related software. In June 2014, the company announced raising $70 million in a Series C funding round, just 18 months after forming the company. The round was led by New Enterprise Associates (NEA). Additional funders include Benchmark Capital and Index Ventures. This round brings total funding to $104M.

In March 2015, the company Elasticsearch changed their name to Elastic.

Overview

Elasticsearch can be used to search all kinds of documents. It provides scalable search, has near real-time search, and supports multitenancy. "Elasticsearch is distributed, which means that indices can be divided into shards and each shard can have zero or more replicas. Each node hosts one or more shards, and acts as a coordinator to delegate operations to the correct shard(s). Rebalancing and routing are done automatically [...]". Related data is often stored in the same index, which consists of one or more primary shards, and zero or more replica shards. Once an index has been created, the number of primary shards cannot be changed.

Elasticsearch uses Lucene and tries to make all its features available through the JSON and Java API. It supports facetting and percolating, which can be useful for notifying if new documents match for registered queries.

Another feature is called "gateway" and handles the long-term persistence of the index; for example, an index can be recovered from the gateway in the event of a server crash. Elasticsearch supports real-time GET requests, which makes it suitable as a NoSQL datastore, but it lacks distributed transactions.

Users

Notable users of Elasticsearch include :

Managed Services

Several organizations offer Elasticsearch as a managed service, including Amazon Web Services Elasticsearch Service, Bonsai, Elastic Cloud, Qbox, Searchly and IBM. Such managed services provide hosting, deployment, backup and other support as a package, reducing the skills and time needed to implement and operate Elasticsearch. Most managed services also include support for Kibana.

References

Elasticsearch Wikipedia