ESQueryStudio – an open-source query workbench for Elasticsearch and Spring Boot

Hi everyone,

I'm the author and maintainer of ESQueryStudio, an open-source (Apache-2.0) query workbench for Elasticsearch. It is an independent community project, not affiliated with Elastic.

I built it for Spring Boot teams that want a query-focused console they can embed in their application, instead of running a separate Kibana instance. The main idea is to keep the whole query investigation in one live session rather than splitting DSL, SQL, explain and profiling across separate tools.

What it covers:

  • Six query modes in one page: DSL builder + raw editor, ES-SQL, Lucene, query sandbox, PIT deep pagination and a SQL ⇄ DSL bridge. Condition tree, raw JSON, results, histogram, history and drafts stay in sync.
  • Mapping-aware assistance: field types, text/keyword sub-fields, analyzers, date formats, sortability and cluster version drive completion, lint, value enums and pre-execution checks.
  • Relevance lab: BM25 score explanation tree, rank detective, query X-ray, clause hit matrix, boost tuner and Profile flame graph.
  • Index lifecycle and operations: zero-downtime alias-flip rebuilds, cross-cluster migration, reindex estimation, snapshots / ILM / SLM, cluster health, tasks, config validation and page-level authorization.
  • One Vue source, two transports: the same 52-page console runs on a Spring Boot server or inside a Chrome MV3 extension. Browser mode talks directly to Elasticsearch with local monitoring, audit, jobs and guarded actions.
  • Host integration: Spring Boot starter / standalone server, 11 feature packs, a page contract and SPIs for auth, connection directory and audit.

Screenshots from the real console (mock data) are below.

Try it:

Compatibility: Elasticsearch 7.x (7.6+ recommended; a 6.7 date compatibility converter is included), JDK 8+, Spring Boot 2.3+ baseline. Browser mode uses Elasticsearch-native authentication with your own least-privilege ES account.

Boundaries I want to be explicit about:

  • Browser mode has no cross-instance distributed locks or server-side code provider. The System page shows local job locks and config drift uses a local baseline.
  • The static demo is synthetic data only; it is not connected to a live cluster.
  • Client-side cross-cluster migration stops if the tab closes and must be resumed explicitly.

I would especially appreciate feedback on:

  1. Whether the query and relevance workflow matches how you investigate search results.
  2. Missing ES 7.x features or version-specific gaps.
  3. Browser-mode boundaries that would block real team use.

Thanks for reading — happy to answer questions or take feature requests.