When I joined the team at 71point4 almost a year ago, one of my first onboarding training sessions was entitled “Dashboarding in Kibana”. The session used our Employment Equity Data, based on EEA2 forms submitted by almost 30 000 employers in South Africa to the Employment Equity Commission in the Department of Labour. We download and process these forms each year when they are published by the Department. Kibana was positioned as the open-source BI tool of choice. I had never used it before, and I was excited to learn something new.
I have a macroeconomics background and spent a lot of time in SQL databases, where an aggregation is a thing you do once, and then build a visualisation from there. I quickly learnt that in Kibana, the aggregations happen inside the chart – every chart. One panel at a time.
Admittedly I struggled a bit. The charts I thought would be simple, were simply not appearing on command. Eventually I realised I wasn’t doing anything wrong: the tool couldn’t work with the data structured the way it was. Elasticsearch (which Kibana sits on top of) isn’t a SQL database, it’s a document store, where each record is self-contained and de-normalised at write time. So there’s nothing to join to, and every chart starts again from the raw documents. You can’t aggregate, then aggregate that result, the way you’d stack a query on a query. In SQL you reshape the data and then chart. In Kibana, the structure arrived with the data.
Meanwhile, I was quietly furious about the colours. I’d just spent two years co-leading a clothing manufacturer, where we’d agonise over the slightest difference between two Pantone shades. Now Kibana offered only a handful of uninspiring options. It felt like I was designing a load-shedding schedule where aesthetics must give way to function.
It turns out that I wasn’t the only one on the team with reservations about Kibana’s features and ease of use. My colleague and 71point4’s principal Data Scientist Hanjo did some digging on alternatives and came up with Superset. He quickly deployed it on one of our internal servers and connected it to a public dataset on mobile towers around the world, and told me to go play. We were all impressed, and fast forward a few months, we were deploying it in the transactions pipeline for a client.
What’s the difference? {ELK stack} versus {Superset + a database}
ELK stands for Elasticsearch, Logstash and Kibana, and unlike Superset, it is a whole stack: ingestion, storage and dashboards all from one vendor. It was born out of a search problem; before Elasticsearch, finding records in a database that contained a specific word was painfully slow.
How Elasticsearch works is that documents (or observations) are accepted in JSON format. On the way in, Elasticsearch breaks each document’s text down into terms and lists their corresponding document numbers. This is the so-called inverted index. Unlike a normal index which maps a document to the words it contains, an inverted index flips this and maps specific words to the documents where those words appear. Searching then never touches the documents at all: it looks up a search term and returns the documents linked to that word or phrase, and the amount of processing required is driven by the number of records returned by the search, rather than the total number of records available. A database without an index on that column has to scan through every single row to figure out the same thing.
This is where Elasticsearch is still particularly strong. It was built for searching and indexing unstructured text, making it extremely effective when the problem is finding words or phrases across large volumes of data. This remains relevant today, including in AI applications such as RAG systems and agents, where retrieving the right information from large collections of documents is the critical first step.
Elasticsearch found its market in log analytics and became the default way to sift through millions of server logs, and remains incredibly effective for this. Logstash sits in front of it, shaping and enriching the documents on the way in. Kibana started as a way to visualise what Elasticsearch had found and became the BI face that appears to have been slapped on later, at least in my opinion.
Superset, on the other hand, was born out of a different need. Maxime Beauchemin built it at Airbnb in 2015 and donated it to Apache as an open-source alternative to Tableau and Looker, for analysts who already had a data warehouse and just needed a way to visualise their data. So it is deployed with no storage and no ingestion. It is a (good-looking) face in search of a body, and it speaks SQL to over forty different databases.
