Apache Superset
Apache Superset connects to Elasticsearch via the Arrow Flight SQL protocol, enabling full SQL dashboards and data exploration. Superset is a Tested tool: the tier rests on the elastiq SQLAlchemy dialect that ships with the Docker demo (demo/superset/), which is the configuration the Superset workload was validated against.
Some advanced SQL (subqueries, CTEs) is not in this release yet — see Known Limitations.
Prerequisites
- A running Arrow Flight SQL server (see Arrow Flight SQL guide)
- Apache Superset installed
Quick Start with Docker
The demo includes a pre-configured Superset with sample e-commerce dashboards. The docker-compose.yml that defines the superset-flight profile lives in the demo/ directory of the SoftClient4ES repository — run the command from there:
git clone https://github.com/SOFTNETWORK-APP/SoftClient4ES.gitcd SoftClient4ES/demodocker compose --profile superset-flight upThen open Superset at http://localhost:8088.
Manual Setup
Use this path if you already run Superset and only want to add Elasticsearch as a data source.
1. Install the elastiq SQLAlchemy dialect
Superset reaches databases through SQLAlchemy, so it needs a package that registers a SQLAlchemy dialect. adbc-driver-flightsql is an ADBC/DBAPI driver: it registers no sqlalchemy.dialects entry point, so a SQLAlchemy URI built on its name resolves to nothing.
SoftClient4ES ships the dialect that does: elastiq, a thin subclass of the FlightSQLDialect that flightsql-dbapi provides. It lives in demo/superset/ of the SoftClient4ES repository — the same dialect the Docker demo image installs.
From a checkout of that repository (the Quick Start above clones it), assemble and install the package. The packaging metadata ships as setup_dialect.py; the demo image renames it to setup.py at build time, so do the same here:
mkdir -p /tmp/elastiq-dialectcp demo/superset/elastic_dialect.py /tmp/elastiq-dialect/elastic_dialect.pycp demo/superset/setup_dialect.py /tmp/elastiq-dialect/setup.pypip install /tmp/elastiq-dialectRun that in the Python environment Superset itself runs in. The install adds flightsql-dbapi if it is not already present, and registers elastiq as a SQLAlchemy dialect. Note that flightsql-dbapi requires sqlalchemy < 2.0, so install it into an environment that is already on SQLAlchemy 1.x rather than letting pip downgrade a working one. Restart Superset so it picks up the new entry point.
On the official
apache/supersetimage that environment is/app/.venv, and itspipis not installed by default — the demo image bootstraps it withpython -m ensurepipand then runspython -m pip install, both from/app/.venv/bin/(seedemo/superset/Dockerfile). A package installed into a running container withdocker execis also lost on the next restart, so for a container deployment add these steps to a derived image rather than installing into a live container.
2. Add Database Connection
- Go to Settings > Database Connections > + Database
- Select Other as the database type
- Enter the SQLAlchemy URI, pointing at your Arrow Flight SQL server:
elastiq://localhost:32010?insecure=trueSubstitute your own host and port for localhost:32010 — if Superset itself runs in a container, localhost is that container, not your machine. insecure=true selects a plaintext gRPC connection, the same transport the grpc:// URI uses in the Arrow Flight SQL guide; keep it to a trusted network.
3. Create Charts and Dashboards
Once connected, you can use the full SoftClient4ES SQL syntax directly in Superset:
SELECT customer_name, SUM(total_price) AS revenue, COUNT(*) AS ordersFROM ecommerceGROUP BY customer_nameORDER BY revenue DESC;Cross-index JOIN
The superpower of this release: Elasticsearch SQL can’t JOIN across indices — SoftClient4ES does, and the JOIN runs straight through Superset’s Flight SQL dialect. In SQL Lab, join two indices in one query:
SELECT e.name, e.salary, d.dept_nameFROM jdbc_join_emp eJOIN jdbc_join_dept d ON e.dept_id = d.dept_id;-- 5 rows (the orphan employee with dept_id=99 is dropped by the INNER JOIN)Build a chart or dashboard directly on the joined result set.
For the full JOIN matrix (INNER / LEFT / RIGHT / FULL / cross-cluster), see the Cross-Index JOIN walkthrough. JOIN depth and cluster count are metered — see Pricing.
Screenshot coming in a follow-up release. Captured with Apache Superset against SoftClient4ES 0.2.1 (Arrow Flight SQL), 2026-06.
Supported Features
| Feature | Status |
|---|---|
| SELECT queries | Tested |
| Aggregations (GROUP BY) | Tested |
| Window functions | Tested |
| DDL (CREATE/ALTER/DROP) | Tested |
| DML (INSERT/UPDATE/DELETE) | Tested |
| SHOW/DESCRIBE | Tested |
| Chart creation | Tested |
| Dashboard creation | Tested |
| Cross-index JOIN | Compatible (JOIN runs via the Flight SQL server; verify before upgrading to Tested) |
Known limitations
Subqueries, CTEs (WITH), and set operators beyond UNION ALL are not in this release — and the Question/chart builder can auto-generate them. See Known Limitations & Roadmap for exactly what works today, what’s coming in the next release (Quarter 4 2026), and the per-tool workaround.
License
Superset integration uses the Arrow Flight SQL server, licensed under the Elastic License 2.0.