With NoSQL databases popping up all over the place, there seems to be a database for everything. Looking into NoSQL databases, it gets a little confusing knowing when to use what database for your information. One of the newer databases that have begun to gain a lot of traction is Elasticsearch. Elasticsearch prides itself on being an extremely fast search and analytics engine, with multiple other beneficial functionalities. Today, we will be going over how Elasticsearch compares to some of the other tried and true NoSQL databases out there, and when you would use them.


When it comes to NoSQL databases, there are tons of them, and there are also numerous types of NoSQL databases. Composed here is a list of 5 of the more popular types of NoSQL database types, and what they can be used for.


Key-value pairs are exactly as they sound. The major difference is that the keys and values can be anything. This could range from something like an integer or string all the way to complex objects. If your use case is an application that revolves around session information, this would be the preferred database type. An example of a key-value NoSQL database would be Redis or Amazon DynamoDB.


Document-based NoSQL databases are all about storing the information into a document-based object. This could be a JSON object, or something like XML, YAML, or even BSON. This gives them a lot of flexibility and makes it easier for developers, seeing as those documents can be directly mapped into objects. JSON is one of the most widely used document formats amongst developers. Being document based allows for the structure to be modified at almost any time adding to the flexibility even more. An example of a document-based database would be MongoDB.


Graph-based is one of the more unique uses, however, it can be extremely useful in the right circumstances. In a graph-based database, the data is stored in the form of nodes and edges. Nodes are where the bulk of the information is stored. These would be things like people or companies. The edges then store the relationship between the main entities. An example of this would be Person One (a node) works for (the edge) Company A (another node). These types of databases typically work best for something that requires you to know relationships and patterns between entities, like a social network. Examples of these types of databases would be Amazon Neptune or Neo4j.


Wide Column based databases are most similar to a typical relational database, however, they can store a large number of dynamic columns. These columns can be nested inside of other columns, forming a super column. In addition to that, there are groups of columns, instead of tables, and these columns are made up of column families that group the columns logically. Some databases that are wide column based would be Cassandra or Hbase. 


Elasticsearch doesn’t fall into one of these database types. It would be referred to as a search and analytics engine. This means that Elasticsearch excels at full-text searching data, pulling back numerous records in the blink of an eye. It is a near real-time search platform, meaning once records are indexed, they can be searched in as short as one second. This leads it to be a front runner when used for things such as security and infrastructure analytics, which can often have time-sensitive applications. It can support numerical, structured, unstructured, geospatial, and textual data. Elasticsearch is distributed by nature using shards. These are duplicated in order to provide redundant copies in case something in the hardware were to fail, preventing data loss. This distributed aspect allows Elasticsearch to scale incredibly well, allowing it to handle enormous amounts of data with relative ease.


Looking at everything we have discussed, it is clear that every database type has its own uses. Whether it be to ease the burden of developers with something like MongoDB, or to give near real-time results to people searching for items in a warhorse manifest using Elasticsearch. Every database has its intended use, and making sure that your implementation is taking advantage of that is crucial to leading a successful and efficient organization.


Jake is a software developer who chose the software and computer industry due to his love of technology. He started working at JumpMind in 2020 and has loved helping customers achieve their goals. In his free time, Jake loves cooking and hanging out with his friends and family, especially his two cats Habanero and Mojito.