Dejavu, from the team behind ReactiveSearch (GitHub handle appbaseio), describes itself as "a modern web UI for OpenSearch and Elasticsearch" (README). Its job is to show you documents in a spreadsheet-like grid, let you filter and sort them, edit or delete them, and import new ones from CSV or JSON. FlatQL's job is different: you write SQL against indices, the cluster does the filtering and grouping, an embedded engine does joins and window functions, and the result goes to a grid, a chart or an export file. One is a data browser with editing; the other is a query workbench.
Side by side#
| Dejavu | FlatQL | |
|---|---|---|
| Licence | MIT (repo) | Proprietary; Free and Pro plans |
| How it runs | Docker image appbaseio/dejavu on port 1358, Compose files for OpenSearch and Elasticsearch 7.x and 8.x, or the hosted app at dejavu.reactivesearch.io (README) |
Web app, plus a desktop app that is coming soon |
| Cluster requirement | CORS enabled for the Dejavu origin (README) | None; HTTP API with your credentials |
| Query language | Filtered views, global search bar, Query DSL for bulk updates (README) | SQL; Show as DSL reveals the generated Query DSL |
| Joins across indices | Not described | Yes, in the embedded engine |
| Editing documents | Update individually or in bulk via queries, delete (README) | No document editing |
| Import | CSV or JSON with guided field mapping (README) | CSV, Excel, JSON, NDJSON and JSON APIs into a new index, mapping preview first |
| Export | Filtered views as JSON or CSV (README) | CSV, TSV, JSON, NDJSON, Excel, Parquet, streamed up to 5,000,000 rows |
| Access control | Not described in the README | Owner, admin, member and named roles with read or write per index pattern |
| Query history | Not described in the README | History with user, connection, duration and rows |
| Latest release | 3.10.0, September 2025 (releases) | See the changelog |
| Price | Free | Free plan; Pro $199 one-time per user (pricing) |
What Dejavu does well#
Dejavu is quick to put in front of a cluster. One docker run and you have a grid of documents with column filters, sorting and a search bar across the data, and you can export the filtered view as JSON or CSV (README). Since version 1.5 it has supported bulk updates and filtering through Query DSL, so a fix across many documents is a single action rather than a script. The CSV and JSON importer walks you through field mapping before it writes.
There is also a "Search Preview" mode for building and testing a search UI and exporting the code to CodeSandbox (README). That ties in with ReactiveSearch's search-UI product and is outside anything FlatQL does.
The project is active: the latest tagged release is 3.10.0 from September 2025 and the repository was last pushed in July 2026 (GitHub API). It is not archived.
Where Dejavu is the better fit#
- You need to correct documents by hand or in bulk. FlatQL does not update or delete documents at all.
- You want a hosted UI with nothing to run. Dejavu's hosted app connects straight from the browser, provided the cluster allows the origin through CORS.
- You are building a search front end and want to test relevance and generate UI code.
- You want an MIT-licensed tool you can fork and keep inside your own stack.
Where FlatQL is the better fit#
- The question spans two or more indices. FlatQL joins
orderstoorganizationsin one statement; the cluster runs the pushable filters, the embedded engine does the join. See joins. - You want aggregations without writing aggregation DSL.
GROUP BYbecomes a composite aggregation or a date histogram on the cluster, and Show as DSL displays what was sent. See pushdown. - The export is large. FlatQL streams up to 5,000,000 rows to disk in CSV, TSV, JSON, NDJSON, Excel or Parquet. See export.
- Several people share the cluster. Connections are shared with credentials encrypted server-side, production connections are read-only by default, and roles limit which index patterns each person can read or write. See teams.
- You want to know who ran what. Query history records user, connection, duration and row count, and groups similar statements by fingerprint.
A typical FlatQL statement that Dejavu's grid cannot express:
SELECT o.country,
COUNT(*) AS orders,
SUM(r.amount) AS revenue
FROM orders AS r
JOIN organizations AS o ON o.primary_domain = r.customer_id
WHERE r.status = 'paid'
AND r.placed_at >= '2026-01-01'
GROUP BY o.country
ORDER BY revenue DESC
LIMIT 20;
The WHERE conjuncts on orders are pushed as filters, both indices are fetched up to the engine's cap of about 50,000 rows per index, and the join and final grouping run in the engine. The result panel tells you which parts ran where.
Using both#
Many teams will keep Dejavu for what it is good at and add FlatQL for the analytical work. A reasonable split:
- Dejavu for inspecting a handful of documents, patching a field or deleting test data.
- FlatQL for reporting queries, joins, exports and anything someone else will need to rerun later.
- FlatQL's shared connections for the production cluster, so most people never hold the cluster password at all.
Both need only the HTTP API. Nothing is installed on the cluster by either tool.
If your current tool is a document browser and you are looking across the range of options, the Elasticvue comparison and the elasticsearch-head comparison cover two other popular browsers. For a broader list see Elasticsearch GUI tools.
Note Facts about Dejavu on this page come from its GitHub README and release data as of November 2026. Check the repository for anything newer.