Working with NoSQL persistence simplifies a lot of things when building applications. You can build persistence functionalities from scratch or you can use an already available solution like elastic-search or combine the both.
In this post, I will show how to store JSON documents to ElasticSearch and then later leverage its REST API and DSL to perform various searches/queries easily using .NET Core.
I have previously written few posts about elasticsearch and/or document databases. You can find the links in reference section, if you want to refresh some background information about those topics.
What is ElasticSearch
Elasticsearch is a search engine based on the Lucene library. 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.
There are client libraries available for different languages e.g. Node.js, .NET Core etc. I’ve written some posts about ElasticSearch and NoSQL databases you can find in reference section.
What is a document
Documents are essentially a set of key-value pair.
NEST High Level Client
The high level client, ElasticClient, provides a strongly typed query DSL that maps one-to-one with the Elasticsearch query DSL. It can be installed from the Package Manager Console inside Visual Studio.
You can read more about NEST on this URL.
Demo Project Setup
You shall be running elasticsearch service on your computer. There is an installer available from official website and you can download and install it on your computer. I’ve explained this process in my previous post and you can check that one for details.
The code for the demo project is available on this git repository. To start with I created a .NET Core console application and added the NEST package via nuget.
In this project, we will be working with Post (blog post) records. The following picture shows how the Post model looks like: