ElastiQuill is a reference implementation for a real-world use-case which includes discussions of all important Elasticsearch topics and more. Read along to discover how our customers and us use Elasticsearch to build amazing products.

In this blog-posts series we are going to build a fully working blog-engine application based entirely on Elasticsearch.

During this series, we will walk through the building process step-by-step and have in-depth discussion about things that matter when you write software systems using Elasticsearch for persistence and queries. We will not focus on the frontend- or backend- bits but, rather, on how to use Elasticsearch to support them.

Full source code: https://github.com/bigdataboutique/elastiquill

Blog series: https://blog.bigdataboutique.com/series/elastiquill 

What and Why?

We support many companies world-wide in their Elastic Stack journey - from the very first integration, to solving really complex business problems and performance issues. We often receive questions about data modeling, logging and monitoring infrastructure, best practices and so on. As a response, we refer our customers to our internal wiki or just reply with our standard advice on the specific topic at hand.

More often than not, the advice we give can’t be easily found in any documentation and sometimes, even worse - we see wrong advice given in on-line blog posts and forum discussions.

For that end, we figured an end-to-end implementation of a real-world application will be well-deserved for a product like Elasticsearch and the Elastic Stack, something we can use as a reference when we answer questions or teach. A blog engine is a great use-case that can be used for learning - it has non-trivial design discussions to be made and features to implement, yet it is a very well understood problem that doesn’t require complex solutions.

ElastiQuill is a reference implementation for a real-world use-case which includes discussions of all important Elasticsearch topics and more . It can be used as a learning experience for newbies or even experienced developers looking to get better acquainted with Elasticsearch as a reference application you can grab code from, or as your blog engine.

In the code-base and in this blog-posts series you are going to find the following topics:

- document-oriented modeling
- schemas and data types
- full-text search queries and text normalization
- more full-text features like auto-complete and “did you mean”?
- data consistency
- logging and monitoring
- the Elastic Common Schema (ECS)
- queries and aggregation-queries
- index sizing and lifecycle management
- shards, indexes and replicas
- production-grade application and operations

The Technology Stack

ElastiQuill is written in Javascript / NodeJS, and uses Express.js for the backend. The admin interface uses ReactJS, and the actual blog frontend renders static HTML server-side so it’s fast loading and easily readable by search engines.

Features:

* Fully featured blog engine - posts, comments and replies to comments
* Anti-spam with Akismet and Recaptcha
* Medium-like writing interface
* Blog analytics 100% powered by Elastic
* Fully customizable design and layout via handlebars templates
* Support for content pages and a contact form
* Password-less admin interface (social login / SSO)
* Cross-posting between other blogs and Medium
* Social posting integration (Twitter, LinkedIn, Reddit and more)
* Built-in backup and full database dump
* Content caching
* Themes support

You can see ElastiQuill in action on our live demo: https://elastiquill.bigdataboutique.com. ElastiQuill is also running this very blog - so if you enjoyed your time so far, you already enjoyed ElastiQuill!

Stay tuned as we post more posts in this series, we will be posting them over the course of the next weeks.