Tabularis
August 3, 2026 · View on GitHub
Tabularis — Elasticsearch Plugin
A Tabularis driver plugin that lets Tabularis users inspect and query Elasticsearch clusters.
Current features
- Index browsing: list indices and view basic index stats
- Mapping viewer: inspect index mappings (fields, types, nested structures)
- Document samples: preview documents from an index (sampling/scroll)
- Query execution: run Elasticsearch queries and show results in the Tabularis UI
Usage
The plugin supports four query modes. The mode is determined by an optional shebang (#!) at the beginning of the query.
| Mode | Prefix | Description |
|---|---|---|
| SQL (default) | (none) or #!sql | Execute Elasticsearch SQL queries. |
| ES|QL | #!esql | Execute ES|QL queries. |
| REST | #!rest | Send raw Elasticsearch REST requests. |
For examples
SELECT * FROM user_index_000000004;
-- Or explicitly:
#!sql
SELECT * FROM user_index_000000004;
#!esql
FROM user_index_000000004
#!rest
POST /post_index/_search
{"query":{"match_all":{}},"fields":[{"field":"id"},{"field":"content"}],"sort":[{"_doc":{"order":"asc"}}],"track_total_hits":-1,"_source":true}
The first line must contain the HTTP method and endpoint. The remaining content is sent as the request body.
Installation
Install from the registry
This plugin is published to the Tabularium registry as
tabularis-elasticsearch-plugin. Search for Elasticsearch in the Tabularis plugin
browser and install it from there.
If you point Tabularis at a different Tabularium instance via customRegistryUrl in
config.json, make sure that registry has ingested this plugin's releases.
Installation (developer workflow)
Build and install the plugin locally:
just dev-install # builds and installs to $HOME/Library/Application Support/com.debba.tabularis/plugins/elasticsearch
Open Tabularis and choose the "Elasticsearch" driver in the connection picker. Configure a connection http://<username>:<password>@<host>:<port> to start exploring indices.
Explain
Copy the binary and .tabularium into the Tabularis plugins folder under a
elasticsearch/ subdirectory:
| OS | Path |
|---|---|
| Linux | ~/.local/share/tabularis/plugins/elasticsearch/ |
| macOS | ~/Library/Application Support/tabularis/plugins/elasticsearch/ |
| Windows | %APPDATA%\debba\tabularis\data\plugins\elasticsearch\ |
Restart Tabularis (or install via Settings) and pick Elasticsearch in the connection form.
Build
cargo build --release
# binary: target/release/tabularis-elasticsearch-plugin
Development
For setup test environment (run Elasticsearch and seed-data)
# Run Elasticsearch
just run-es
# Seed data for Elasticsearch
just seed-es
Run the local REPL to test handlers without Tabularis:
just repl
# use REPL commands to exercise rpc handlers
Project layout (high level):
- src/main.rs — stdio loop for plugin RPC transport
- src/rpc.rs — method dispatch and helper responses
- src/es/* — Elasticsearch client wrapper and connection config
- src/handlers/ — metadata, query, sample, and mapping handlers
- src/models.rs — connection params and shared types
- bin/test_plugin.rs — REPL for exercising RPC handlers locally
Releasing
This repo ships two manifests that must stay in sync with each other and with the release tag:
.tabularium— the runtime manifest, packaged inside each platform.zip..tabularium— the registry manifest read by Tabularium when it ingests a release.
To cut a release:
- Bump
versioninCargo.tomland.tabulariumto the same value. - Commit, then push a tag
vX.Y.Zmatching that version. .github/workflows/release.ymlvalidates the tag against both manifests, builds binaries for all 5 platforms, and publishes a GitHub Release with the zips attached.- Submit (or re-submit) the plugin at registry.tabularis.dev/submit so the new version is ingested. Check
/requestsfor approval status.
Maintainers
- @erwin-lovecraft
License
Apache-2.0.