The Missing Web UI for Elasticsearch: Import, browse and edit data with rich filters and query views, create search UIs visually.
Clone or download
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Aug 14, 2018
batteries @ b7544e5 πŸ›  Update submodule ref Sep 14, 2018
bundle builds 1.5.0 Mar 20, 2018
dejavu/live/src/img Duplicate assets for dejavu/ path Aug 21, 2018
docs s/dejaVu/dejavu Nov 2, 2016
importer Fix babel-polyfill issue in /importer Oct 7, 2017
live πŸ› Fix #232 has filter Sep 14, 2018
.dockerignore optimize the docker build process Apr 8, 2018
.editorconfig Add .editorconfig Aug 18, 2017
.eslintrc add search sandbox [wip] Aug 14, 2018
.gitignore Update gitignore Oct 2, 2017
.gitmodules updates batteries submodule address Aug 28, 2018
404.html Add 404 html Aug 20, 2018 Update Sep 9, 2018
Dockerfile updates Dockerfile Jul 17, 2018 add license file Mar 1, 2016 rename Search Sandbox to Search Preview Aug 28, 2018
docker-compose.yml adds docker-compose yml example for dejavu Mar 19, 2018
gulpfile.js πŸ”₯ Update appbase-js Sep 14, 2018
import-export.html change label text for hidden columns, and page title Feb 27, 2016
importer.webpack.production.config.js Rename _site folder to live May 8, 2017
index.html Fix build system configs Aug 17, 2018
manifest.json Chrome stroge related changes Sep 19, 2016
package.json πŸ”§ Update appbasejs and fix feed.js Sep 14, 2018 s/dejaVu/dejavu Nov 2, 2016
webpack.config.js Upgrade setup with emotion plugins, import plugins and webpack stuff Jul 16, 2018
webpack.production.config.js Fix webpack prod config Aug 17, 2018
yarn.lock πŸ”§ Update appbasejs and fix feed.js Sep 14, 2018

dejavu: The missing Web UI for Elasticsearch

GitHub License React Version Docker Pulls

  1. Dejavu: Intro
  2. Features
    a. Easily Connect to Indices
    b. Visual Filters
    c. Enhanced Filtering with Queries
    d. Modern UI Elements
    e. Realtime Data Updates
    f. Import JSON or CSV Data
    g. Build search UIs
  3. Comparison
  4. Roadmap
  5. Build Locally / Contributing
  6. Get Dejavu
    a. Docker Installation
    b. Hosted Alternatives

1. Dejavu Intro

dejavu is the missing web UI for Elasticsearch. Existing web UIs leave much to be desired or are built with server-side page rendering techniques that make it less responsive and bulkier to run (I am looking at you, Kibana).

We started building dejavu with the goal of creating a modern Web UI (no page reloads, infinite scroll, filtered views, realtime updates, search UI builder) for Elasticsearch with 100% client-side rendering so one can easily run it as a hosted app on github pages, as a chrome extension or as a docker image.

Starting v1.0, dejavu is the only Elasticsearch web UI that supports importing data via JSON and CSV files, as well as defining field mappings from the GUI.

Starting with v1.5, we support the ability of creating custom headers so you can easily pass different authentication headers, provide enhanced filtering and bulk updating of data via Elasticsearch's Query DSL.

Starting with v2.0, we support the ability to build faceted search UIs to test relevancy. You can also export the generated code to a codesandbox.

2. Features

Easily Connect and Remember Indices

Connect to an Index

Dejavu allows you to connect to any of the indexes present in your cluster and also caches each connected index locally so they are easily accessible when browsing again.

Visual Filters

Filter Views

Sort through the data, find information visually, hide irrelevant data and make sense of all the text, numbers and dates. Filters work by identifying data mappings from the Elasticsearch index. If dejavu sees a text field, it will provide filters for search, has and has not and is also mindful if the data is analyzed. Similarly, a numeric field allows filtering on ranges and a date field allows filtering data by dates.

Moreover, any filtered view can be exported as a JSON or CSV file.

Enhanced Filtering with Queries

Enhanced Filtering with Queries

Dejavu also supports showing filtered views based on an Elasticsearch query, as well as bulk updating or deleting documents via the query DSL.

Modern UI elements


It's not uncommon to have thousands of documents in your index. Dejavu supports an infinite scroll based UI, pagination is so old school.

Dejavu also supports browsing data from multiple types, updating data either individually or via queries in bulk. Deletions are also supported.

Realtime Data Updates

Realtime data updates

dejavu uses a websockets based API and subscribes for data changes for the current filtered view. For this to work, the Elasticsearch server needs to support a websockets based publish API. Currently, you can take advantage of this feature by hosting your data with

Import JSON or CSV Data

Import JSON or CSV files

Importer view allows importing CSV or JSON data directly into Elasticsearch through a guided data mappings configuration.

Build Search UIs

Build search UIs

With Search Preview, you can now build visual search UIs, test search relevancy and export code to a codesandbox.

3. Comparison with other data browsers

Features dejavu ES-head ES-kopf ES-browser Kibana
Installation Chrome extension, Docker Image, Hosted App. Elasticsearch plugin, static page Elasticsearch plugin, static page Elasticsearch plugin (doesn't work with v2.0 and above) Elasticsearch plugin
Modern UI Built with React v15.6.0, uses a live-reload interface. Built with jQuery v1.6.1, slightly stodgy Built with Angular 1.x Built with ExtJs, but a bit stodgy Built with Node.JS, Hapi, Jade
Browser features CRUD with support for data filters. Read data with support for full-text search. No data view Data view support for a single type Read view with support for visualizations / charting
Data Import/Export Yes, in JSON and CSV formats. - - - Only export is supported, no CSV support.
Search Preview Visually build and test search Ux. - - - -
Open Source MIT license Apache v2.0 MIT license Apache v2.0 Apache v2.0

4. Roadmap

Here's a rough roadmap of things to come in the version 1.0.0 release.

πŸŽ† We just hit the 1.0.0 roadmap.

  • Battle-testing with different datasets
  • Feature support for advanced filtering Offline detection and reconnection for realtime updates
  • Performance improvements while scrolling
  • Support for importing and exporting data
  • Support for a continuous query view
  • Available as a docker image

🍾 We just hit the 2.0.0 release.

  • An intuitive data editing experience in tabular mode (v/s JSON edit mode)
  • View data types from within the data browser view
  • A more streamlined import process
  • Refactor codebase to improve hackability (Migrate to React 16+, ES6 syntax)
  • Ability to build (and test) search visually

Roadmap beyond v2:

  • Create a test coverage suite
  • Rewrite dejavu browser for high performance when browsing large datasets
  • Support addition of custom analyzers, and updating index settings
  • Make editing of data experience more intuitive (in addition to the raw JSON, show a relevant UI field with validations)
  • Connectors to dashboarding systems for a more flavored visualization experience.

5. Build Locally


6. Get Dejavu

Docker Installation

docker run -p 1358:1358 -d appbaseio/dejavu
open http://localhost:1358/

You can also run a specific version of dejavu by specifying a tag. For example, version 1.0.0 can be used by specifying the docker run -p 1358:1358 appbaseio/dejavu:1.5.0 command.


To make sure you enable CORS settings for your ElasticSearch instance, add the following lines in the ES configuration file.

http.port: 9200
http.cors.allow-origin: "http://localhost:1358"
http.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true

If you are running your Elasticsearch with docker, you can use flags to pass the custom CORS configuration. See the docker-compose.yml file for an example.

Elasticsearch v2.x

docker run --name es -d -p 9200:9200 elasticsearch:2 -Des.http.port=9200 -Des.http.cors.allow-origin="http://localhost:1358" -Des.http.cors.enabled=true -Des.http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization -Des.http.cors.allow-credentials=true

Elasticsearch v5.x

docker run --name es -d -p 9200:9200 -d elasticsearch:5 -E http.port=9200 -E http.cors.allow-origin="http://localhost:1358" -E http.cors.enabled=true -E http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization -E http.cors.allow-credentials=true

Hosted Alternatives

can also be run via hosted app at or installed as a chrome extension.

For example: If you are using the chrome-extension instead of docker image, the http.cors.allow-origin in Elasticsearch.yml file would change accordingly:

http.port: 9200
http.cors.allow-origin: "chrome-extension://jopjeaiilkcibeohjdmejhoifenbnmlh"
http.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true