FlatQL
Sign in Start free

FlatQL vs Elasticsearch Head

FlatQL vs Elasticsearch Head: a 2010 cluster front end and a 2026 SQL workbench

elasticsearch-head is the original browser front end for an Elasticsearch cluster, still installable as a Chrome extension. FlatQL is a SQL workbench for the clusters people run today.

elasticsearch-head is "A web front end for an Elasticsearch cluster" (README), written by Ben Birch and released under the Apache License 2.0 with a copyright line of 2010-2013 (LICENCE). For years it was the first thing people installed next to a new cluster: a single page showing the node and shard topology, a document browser, a point-and-click query builder and a text box for any REST call. It still works as a Chrome extension. FlatQL is a web and desktop SQL workbench built for Elasticsearch 6 to 9 and OpenSearch 1 to 2. It runs SQL with joins across indices, shows the Query DSL behind every statement, and exports results as files. The two tools are sixteen years apart in design, and that is the useful way to compare them.

Sixteen years apart, in one table#

elasticsearch-head FlatQL
Licence Apache License 2.0 (LICENCE) Proprietary; Free plan, $199 lifetime Pro
Last activity Latest commit 6 November 2020 (commits); latest release v5.0.0, 10 April 2018 (releases) Active; see the changelog
Install Chrome Web Store extension; npm install then npm run start on port 9100; Docker tags 5, 2, 1; site plugin deprecated (README) Nothing to install for the web app; desktop app coming soon
Cluster side Standalone server needs http.cors.enabled: true in elasticsearch.yml; the extension does not (README) No cluster changes; HTTP API with your credentials
Version coverage Docker images for 1.x, 2.x, 5.x; "for Elasticsearch 5.x, 6.x, and 7.x: site plugins are not supported" (README) Elasticsearch 6 to 9, OpenSearch 1 to 2
Cluster view "ClusterOverview, which shows the topology of your cluster and allows you to perform index and node level operations" (project page) None
Querying Structured query builder and browser returning "raw json or tabular format"; "Any Request" panel for arbitrary REST calls (project page) SQL editor; Cluster SQL mode for native SQL endpoints
Joins None Inner, left, right, full, cross, ASOF in the embedded engine
Export Not documented CSV, TSV, JSON, NDJSON, Excel, Parquet to 5,000,000 rows (Pro)
Authentication Basic auth headers from auth_user and auth_password URL parameters (README) API key, basic auth, Elastic Cloud ID; team credentials encrypted server-side
History and roles None Query history per user; per-index read or write roles
Price Free Free: 1 cluster, 1 worksheet. Pro: $199 once (pricing)

Where Elasticsearch Head is the better fit#

There are three honest cases for elasticsearch-head in 2026.

The first is an old cluster. The README documents Docker images tagged 5, 2 and 1, and plugin installs for 0.x, 1.x and 2.x (README). If you are keeping a 2.x or 5.x cluster alive and need to see its shards, head was built for exactly that version and its topology view has aged well. FlatQL starts at Elasticsearch 6.

The second is the Chrome extension itself. It installs from the Chrome Web Store, and the README notes "you don't need to enable CORS with this method". For a developer with a local node on port 9200 who wants to glance at index sizes and shard state, it is a one-click, zero-configuration window, released under Apache 2.0 with no account and no server.

The third is cluster-level operations. The project page describes the overview as a place to "perform index and node level operations" (project page). FlatQL does not open, close, delete or move anything; it reads.

What head does not have is any recent development: the last commit is from November 2020 and the last release, v5.0.0, is from April 2018 and is described as a "Release for compatibility with elasticsearch 5.x" (releases). That is a statement of fact about the repository, not a judgment; the software does what it did.

Where FlatQL is the better fit#

FlatQL is the better fit for any cluster running Elasticsearch 6 or later, and for any question that spans more than one index.

The structured query builder in head composes a single Query DSL request against one index. FlatQL takes SQL and decides what to push to the cluster and what to compute itself:

SELECT l.service, l.region,
       COUNT(*) AS requests,
       SUM(IFF(l.status_code >= 500, 1, 0)) AS server_errors,
       LAG(COUNT(*)) OVER (PARTITION BY l.service ORDER BY l.region) AS previous_region
FROM "logs-*" AS l
WHERE l."@timestamp" >= '2026-11-01' AND l.level IN ('WARN', 'ERROR')
GROUP BY l.service, l.region
ORDER BY server_errors DESC
LIMIT 50;

The time and level filters go to the cluster as a bool filter; the GROUP BY is pushed as a composite aggregation because every key is a plain field and every aggregate is a plain COUNT or SUM; the IFF and the LAG window run in the engine. Show as DSL displays the composite aggregation request that was sent, which is also the quickest way to learn Query DSL from SQL you already know (Show as DSL). Add a JOIN to suppliers and the engine fetches both sides, up to about 50,000 rows per index per statement, and joins them.

Connecting is also simpler on a secured cluster. head's standalone server requires http.cors.enabled: true in elasticsearch.yml, and it passes basic auth through auth_user and auth_password URL parameters (README). FlatQL takes an API key, a username and password, or an Elastic Cloud ID, and changes nothing on the cluster; see connect a cluster. In a team, the credential is encrypted server-side and members never see it, while an owner grants read or write per index pattern and FlatQL enforces it on every request.

Then there is everything a 2010 front end was never asked for: streaming exports to CSV, TSV, JSON, NDJSON, Excel or Parquet up to 5,000,000 rows; charts and pivots on the result; a history of every statement with user, connection and duration; and Ask FlatQL, which reads your mappings and drafts the SQL or DSL for you without running it.

Using both#

If you still have a 5.x cluster, keep head's Chrome extension pinned for it and use FlatQL for the 7.x, 8.x and 9.x clusters it cannot see. On a modern cluster, head's "Any Request" panel is roughly what Kibana's Console or Elasticvue's REST view give you today, and either of those is the natural upgrade for the admin half of head's job; FlatQL replaces the query half. The Elasticvue comparison and the Cerebro comparison cover the two most common admin-side successors, and the elasticsearch-head alternatives roundup lists the rest.

The Free plan covers one cluster and the full SQL engine, which is enough to run the query above against your own logs-* indices. Details on the pricing page.

FAQ

Questions

Anything else, write to us.

Is elasticsearch-head still maintained?

The repository is public and not archived, but its most recent commit is dated 6 November 2020 and its latest release, v5.0.0, is from 10 April 2018 and described as "Release for compatibility with elasticsearch 5.x". Treat it as finished software rather than an active project.

Does elasticsearch-head work with Elasticsearch 8 or 9?

The README does not say. It documents Docker images for 5.x, 2.x and 1.x and notes that site plugins are unsupported from 5.x on. FlatQL covers Elasticsearch 6 to 9 and OpenSearch 1 to 2; see connect a cluster.

Can I run SQL in elasticsearch-head?

No. It offers a structured query builder, a document browser and an "Any Request" panel for raw REST calls. FlatQL runs SQL with joins and shows the Query DSL for every statement with Show as DSL.

Does FlatQL need CORS enabled on the cluster like the standalone head server?

No. The FlatQL web app talks to the cluster from its backend, and the desktop app (coming soon) runs on your machine. Nothing is changed in elasticsearch.yml.

Start on Free. It stays free.

Connect a cluster and run a join in five minutes. No card, no expiry.

Guides

How FlatQL handles the jobs Elasticsearch makes hard.