Blogsearch

Searching blog posts in Jekyll, a popular static website generation.

Overview

Blogsearch is a simple site search solution for websites built on top of the popular blog engine Jekyll and the Jekyll TeXt Theme. It is currently used by 3 websites for searching blog posts: https://mincong.io, https://nanosearch.io, and https://jingwen-z.github.io. It is built on top of Java and Elasticsearch.

Blogsearch demo

Core Components

Blogsearch contains multiple components: a web component in the client’s website, a Jekyll plugin for indexing blog posts during content generation, a backend service, and the underlying infrastructure.

  • For the web component, Blogsearch uses JavaScript to search the articles using UI, modified from the existing search bar of the Jekyll TeXt Theme. A new query is sent to the backend for each character entered into the search bar.
  • For the Jekyll plugin, Blogsearch uses a Ruby plugin to reach the metadata of each blog post, including the title and the content, and send them to the backend API for indexing. The credentials are stored in GitHub secrets.
  • For the backend service, Blogsearch uses Java RESTful APIs. The API is generated by OpenAPI.
  • For the infrastructure, Blogsearch uses AWS Elastic Container Service (ECS) as the orchestration platform. The data are stored in Elastic Cloud and Mongo Atlas.

You can find more details in this blog post about the architecture of Blogsearch.