DBeaver is a universal database client. Its GitHub repository describes it as a "Free universal database tool and SQL client" under the Apache-2.0 licence (GitHub), and the Community edition lists Elasticsearch, OpenSearch and Open Distro Elasticsearch among the drivers it supports out of the box (README). It reaches Elasticsearch the same way it reaches Postgres: a JDBC driver, here Elastic's x-pack-sql-jdbc. FlatQL is a workbench for Elasticsearch and OpenSearch only. Instead of a JDBC driver it uses the HTTP API, pushes filters, sorts, limits and GROUP BY to the cluster, and runs joins, CTEs and window functions in an embedded engine. If you already live in DBeaver for relational databases, the question is whether the Elasticsearch connection there is enough, or whether the search cluster deserves its own tool.
What the JDBC path means#
Elastic's guide to connecting DBeaver has you pick the "Elasticsearch" connection type and use the Elasticsearch SQL JDBC driver; DBeaver "is aware of the Elasticsearch JDBC maven repository" so the artifact can be downloaded from the driver settings, and the guide requires DBeaver 6.0.0 or higher (Elastic docs). Three consequences follow.
The cluster needs a licence for the driver. Elastic's download page states "JDBC client requires a Platinum subscription" and asks you to "ensure that you have a Trial or Platinum license installed on your cluster before proceeding" (JDBC Client download). The driver also cannot be newer than the Elasticsearch version it connects to (SQL JDBC docs).
The SQL is Elasticsearch SQL. Its FROM clause "supports exactly one table" (SELECT reference), so there are no joins. Sub-selects are "supported to a small degree", nested fields cannot be used in a query directly, and array fields are not supported, with an exception thrown by default when a field returns multiple values (SQL limitations).
OpenSearch is a separate path. The DBeaver README lists OpenSearch and Open Distro as drivers in their own right.
FlatQL sidesteps all three. It does not use the JDBC driver, so it needs no Platinum licence. Its engine supplies joins, CTEs, window functions, UNION, HAVING and QUALIFY, and flattens nested fields with LATERAL FLATTEN. The same worksheet works against Elasticsearch 6 to 9 and OpenSearch 1 to 2. When you do want the cluster's native SQL, Cluster SQL mode sends the statement to x-pack SQL or the OpenSearch SQL plugin unchanged.
Comparison#
| DBeaver (Elasticsearch connection) | FlatQL | |
|---|---|---|
| Licence | Community: Apache-2.0 (GitHub); PRO editions commercial | Proprietary, Free and Pro plans |
| Editions with Elasticsearch | Community lists it out of the box (README); Enterprise marks "enhanced features" over Community (Enterprise edition) | All plans |
| Install | Desktop app for Windows, macOS, Linux, plus the JDBC driver download | Web app; desktop app coming soon |
| Cluster-side requirement | Platinum or Trial licence for the JDBC driver (Elastic) | None beyond HTTP access and your credentials |
| SQL dialect | Elasticsearch SQL | FlatQL SQL (Snowflake-style) or Cluster SQL mode |
| Joins | No; FROM takes one table (Elastic) | Yes, across indices in the engine |
| Window functions, CTEs | Not in Elasticsearch SQL | Yes |
| Nested fields | Cannot be queried directly (Elastic) | LATERAL FLATTEN |
| Schema browsing | Tree navigator and ER diagrams (ER diagrams) | Index and mapping browser |
| Export formats | CSV, JSON, XML, HTML, Markdown, SQL, TXT, XLSX, DbUnit, source code (Data export) | CSV, TSV, JSON, NDJSON, Excel, Parquet, streamed up to 5,000,000 rows |
| Access control | Local client; cluster users | Roles per index pattern, enforced by FlatQL on every request |
| Query history | Local to the client | Shared history with user, connection, duration, rows |
| Price | Community free; Lite $113/yr, Enterprise $255/yr, Ultimate $510/yr, Team $1,630/yr (editions) | Free; Pro $199 one-time per user (pricing) |
Where DBeaver is the better fit#
- You have many databases and want one client. DBeaver's Community driver list runs to well over a hundred entries, and the PRO editions add NoSQL stores such as MongoDB, Cassandra and Redis (README). Elasticsearch is one tab among many.
- Your cluster already carries a Platinum or Enterprise subscription, so the JDBC driver's licence requirement costs you nothing extra.
- Your queries are single-index selects and aggregations, which is exactly what Elasticsearch SQL handles.
- You want DBeaver's export formats, for example SQL
INSERTstatements or DbUnit XML, to move Elasticsearch rows into a relational database or a test fixture (Data export). - You want ER-style diagrams across your relational schemas. On Elasticsearch there are no foreign keys, so expect field lists rather than relationship lines.
Where FlatQL is the better fit#
- You need a join. This is the most common reason people stop using the JDBC path:
WITH recent AS (
SELECT customer_id, SUM(amount) AS spend
FROM orders
WHERE placed_at >= '2026-07-01' AND status = 'paid'
GROUP BY customer_id
)
SELECT o.name, o.country, r.spend
FROM recent AS r
JOIN organizations AS o ON o.primary_domain = r.customer_id
QUALIFY ROW_NUMBER() OVER (PARTITION BY o.country ORDER BY r.spend DESC) <= 3;
The orders filter and GROUP BY are pushed to the cluster as a composite aggregation; the join and the QUALIFY run in the engine. See joins and window functions.
- The cluster is on the free Basic licence, or it is OpenSearch, and you do not want to buy a subscription for a client driver.
- You want to see the Query DSL. Show as DSL puts the exact request next to every result, which the JDBC driver hides.
- A team shares the cluster. FlatQL stores credentials encrypted server-side, keeps production connections read-only by default and limits each role to index patterns. DBeaver connections are per machine.
- You need exports that do not fit in memory. FlatQL writes to disk as rows stream, up to 5,000,000 of them.
Know the engine's limits too: it works on at most about 50,000 rows per index per statement, so pushable filters and a LIMIT matter. The limits page spells this out.
Using both#
Keep DBeaver for your relational estate and for the occasional Elasticsearch SELECT when the cluster is already Platinum. Use FlatQL when the question touches two indices, needs a window function, needs a large export or needs to be shared with people who should not hold the cluster password. If you want to compare Elasticsearch SQL output with FlatQL's engine on the same statement, Cluster SQL mode does that inside one worksheet.
For more on the dialect behind the JDBC driver, read the Elasticsearch SQL comparison and the OpenSearch SQL comparison.
Note Elastic's DBeaver guide carries the line "Elastic does not endorse, promote or provide support for this application". FlatQL is likewise not affiliated with Elastic N.V., the OpenSearch Project or DBeaver Corp.