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
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.
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.
Build and install the plugin locally:
just dev-install # builds and installs to $HOME/Library/Application Support/com.debba.tabularis/plugins/elasticsearchOpen Tabularis and choose the "Elasticsearch" driver in the connection picker. Configure a connection http://<username>:<password>@<host>:<port> to start exploring indices.
Copy the binary and manifest.json 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.
cargo build --release
# binary: target/release/tabularis-elasticsearch-pluginFor setup test environment (run Elasticsearch and seed-data)
# Run Elasticsearch
just run-es
# Seed data for Elasticsearch
just seed-esRun the local REPL to test handlers without Tabularis:
just repl
# use REPL commands to exercise rpc handlersProject 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
This repo ships two manifests that must stay in sync with each other and with the release tag:
manifest.json— 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.toml,manifest.json, and.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.
- @erwin-lovecraft
Apache-2.0.