Elasticsearch is full-text search, which is based on Apache Lucene. It has RESTful interface and can offer high availability, speed and scalability. It is being developed in Java and can communicate with it with the usage of web interface. It spreads with the usage of Apache license freely.

Typical features

  • Data are available in the real time. One of its main features is speed. Thanks to that is possible for example to use filters on websites and search results are displayed almost immediately.
  • Distributed system. Elasticsearch is possible to simply scale based on how is being increased the load of server, on which it is executed. If the server’s efficiency is insufficient, adding another server is enough. This kind of cluster then decomposes data among the created nodes optimally.
  • High level of availability. In case of some of the cluster’s nodes shows error, Elasticsearch identifies it and excludes it from service. Data are then divided among the remaining nodes as to ensure the maximal availability and data remaining safe.
  • Option of full-text search. Elasticsearch is used for searching within Apache Lucene, which is probably the most efficient open source full-text search. This searching also offers support of larger amount of languages, searching based on geographic location, searching related and similar records and searching in style of “you’ve had in mind”. It is also possible to use for intelligent automatic filling of forms on web.
  • RESTful API. Elasticsearch uses API. Almost any action is possible to do with the help of document in a JSON format, which is sent with the help of HTTP. There is, for the work with different programming language, available a lot of libraries, which simplify the work with Elasticsearch.

Mechanism of data saving

Elasticsearch is based on a schema-less database principle. Thanks to that it is not needed to define database structure. It creates itself based on data, which are inserted into the database.

Advantages of using Elasticsearch

  • Built on the base of Lucene. Regarding to Elasticsearch being built based on Lucene, it offers one of the strongest platforms for full-text search.
  • Full-text search. Elasticsearch does linguistic searching in documents and gives back documents, which correspond to the search criteria. Result relevance for the search is being compared with the help of TF/IDF algorithm.
  • Document oriented. It saves complex entities in a form of structured JSON documents and indexes all fields by default, by which it increases efficiency.
  • Scheme-less. It saves large amount of half-structured data in a form of JSON files. It tries to detect data structure automatically, index the present data and to simplify the search in it most.
  • RESTful API. Elasticsearch supports REST API. It is possible to use Elasticsearch with the help of REST API through Sense plugin to the Chrome browser. Sense offers simple user interface.

Disadvantages of using Elasticsearch

  • Support of more languages. Elasticsearch doesn’t have full support of more languages in the sense of request and answer support (available only in JSON). In contrast to Elasticsearch, Apache Solr has an option to use formats as CSV, XML and JSON.
  • Storing data. It is not suitable solution of storing data, as it is at other solutions (e. g. MongoDB, Hadoop and other). For smaller applications will be the efficiency sufficient, but if you work with terabytes of data every day, Elasticsearch is not suitable tool.
  • Difficult to learn. Elasticsearch is more powerful and more flexible than e. g. Angolie but has much steeper curve of learning.