ES 6 • ES 7 • ES 8 • ES 9 — One SQL Interface

Stop ETL’ing Elasticsearch into your warehouse just to JOIN it.

Single-cluster or cross-cluster JOINs on Elasticsearch — via JDBC, ADBC, or Arrow Flight SQL. Pick your scale.

Terminal
curl -fsSL https://raw.githubusercontent.com/SOFTNETWORK-APP/SoftClient4ES/main/install.sh | bash
softclient4es --host localhost --port 9200
Apache 2.0 ES 6 – 9 Scala 2.12 / 2.13 Arrow Flight SQL
SRE & Platform

Correlate logs, metrics, and traces across regional ES clusters in a single SQL query.

One incident, several regions, several clusters. Instead of pivoting across N dashboards, JOIN the per-region indices in one query and read the timeline straight across.

Cross-cluster correlation runs on the federation server (Pro+). See the editions & pricing, then the federation operator guide.

Cross-region incident triage Federation (illustrative)
-- Illustrative: substitute your own per-region index names.
-- Catalog prefixes route each leg to its regional cluster.
SELECT u.user_id, u.action, e.error_code, e.region
FROM `prod_us`.user_events u
JOIN `prod_eu`.error_events e
  ON u.user_id = e.user_id
WHERE e.ts > NOW() - INTERVAL '15' MINUTE
ORDER BY e.ts;

SQL for Every Role

One suite, three perspectives — each team finds what they need.

Data Engineers

Build Pipelines, Not JSON

Ingest, transform, and materialize data across Elasticsearch indices using standard SQL — no custom scripts, no REST API gymnastics.

  • DML — INSERT, UPDATE, DELETE with SQL expressions
  • COPY INTO — bulk load from S3, local files (JSON, CSV, Parquet)
  • Cross-index JOIN — JOIN across ES indices in one query; ES can’t do this natively
  • Materialized Views — persist a pre-joined, pre-aggregated index
  • Arrow Flight SQL — Arrow-native, zero-copy columnar streaming (full benchmark coming in a follow-up release)
Data Pipeline in SQL COPY INTO + MV
-- Ingest from S3
COPY INTO raw_events
FROM 's3://lake/events.parquet'
FORMAT PARQUET;

-- Materialize a cross-index JOIN
CREATE MATERIALIZED VIEW
  order_details AS
SELECT o.id, c.name, SUM(o.amount)
FROM orders o
JOIN customers c
  ON o.customer_id = c.id
GROUP BY o.id, c.name;
Data Analysts

Connect Your BI Tools

Query Elasticsearch with the SQL you already know. Connect Superset, Grafana, Tableau, or DBeaver — no Elasticsearch expertise required.

  • JDBC Type 4 — plug into any JDBC-compatible BI tool
  • Window functions — AVG OVER, FIRST_VALUE, ARRAY_AGG
  • Multi-nested queries — navigate complex ES mappings naturally
  • Materialized Views — query persisted, pre-joined data instantly (one of two ES-impossible superpowers, alongside query-time cross-index JOIN)
  • ADBC — Arrow-native driver for DuckDB, Pandas, Polars
Analytics Query Window Functions
SELECT name, department, salary,
  AVG(salary) OVER (
    PARTITION BY department
  ) AS dept_avg,
  FIRST_VALUE(name) OVER (
    PARTITION BY department
    ORDER BY salary DESC
  ) AS top_earner
FROM employees
WHERE hire_date > '2024-01-01';
Platform / DevOps

Manage Schemas with SQL

CREATE, ALTER, DROP indices with familiar DDL. One unified API across ES 6 through 9 — no version-specific JSON mappings.

  • DDL — CREATE TABLE, ALTER TABLE, DROP TABLE
  • GatewayApi — one interface for ES 6, 7, 8, and 9
  • Interactive REPL — explore, debug, and manage from the terminal
  • No ES license required — Apache 2.0 core, external client
Schema Management DDL
CREATE TABLE users (
  id KEYWORD,
  name TEXT,
  email KEYWORD,
  age INTEGER,
  created_at DATE,
  PRIMARY KEY (id)
);

ALTER TABLE users
  ADD COLUMN status KEYWORD;

-- Explore from the REPL
SHOW TABLES;
DESCRIBE users;

How We Compare

Key differentiators at a glance.

Cross-index JOIN

SoftClient4ES: Yes
Elastic SQL:No
CData:Limited
NLPchina:Limited
Trino ES:Via Trino
OpenSearch:Limited

Cross-cluster JOIN

SoftClient4ES: Yes
Elastic SQL:No
CData:No
NLPchina:No
Trino ES:Via Trino
OpenSearch:No

DDL (CREATE/ALTER/DROP)

SoftClient4ES: Yes
Elastic SQL:No
CData:Limited
NLPchina:No
Trino ES:No
OpenSearch:No

DML (INSERT/UPDATE/DELETE)

SoftClient4ES: Yes
Elastic SQL:No
CData:Yes
NLPchina:No
Trino ES:No
OpenSearch:No

Window functions

SoftClient4ES: Yes
Elastic SQL:No
CData:No
NLPchina:No
Trino ES:Yes
OpenSearch:No

Materialized Views

SoftClient4ES: Yes (ES 7.5+)
Exclusive
Elastic SQL:No
CData:No
NLPchina:No
Trino ES:No
OpenSearch:No

JDBC Driver

SoftClient4ES: Type 4
Elastic SQL:Paid
CData:Yes
NLPchina:No
Trino ES:Via Trino
OpenSearch:Yes

Arrow Flight SQL

SoftClient4ES: Yes
Elastic SQL:No
CData:No
NLPchina:No
Trino ES:Via Trino
OpenSearch:No

ADBC Driver

SoftClient4ES: Yes
Exclusive
Elastic SQL:No
CData:No
NLPchina:No
Trino ES:No
OpenSearch:No

Licensing: SoftClient4ES core is Apache 2.0. Extensions (Materialized Views, JDBC, ADBC, Arrow Flight SQL) are Elastic v2 license.

Ready to JOIN your Elasticsearch indices?

Drop in a driver, run a cross-index JOIN in minutes — free in Community. No ETL, no warehouse.