Skip to content
The Missing Web UI for Elasticsearch: Import, browse and edit data with rich filters and query views, create search UIs visually.
JavaScript HTML Dockerfile
Branch: dev
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Dec 1, 2019
.vscode Implement virtualized view for data grid Jan 10, 2019
app fix: support empty values in array cell Nov 27, 2019
chrome-specific chore: update batteries, version Jul 17, 2019
media use local GIFs Dec 29, 2018
packages/importer fix: importer app cloning May 22, 2019
site Remove unused iframe Dec 5, 2018
.babelrc.js Add support for object data as columns Nov 27, 2018
.dockerignore Remove site folder from docker image Dec 7, 2018
.editorconfig 🎉 Initial commit Sep 17, 2018
.eslintrc.js Add paginated exported using search_after Jan 8, 2019
.flowconfig feat: add tiebreaker for sorting of list May 9, 2019
.gitignore 🎉 Initial commit Sep 17, 2018
.gitmodules Add landing page Dec 5, 2018
.nvmrc Add nvmrc for netlify Oct 17, 2018
.prettierrc.js 🎉 Initial commit Sep 17, 2018
CONTRIBUTING.md Update CONTRIBUTING.md Dec 19, 2018
Dockerfile Container no longer runs as root. Oct 4, 2019
LICENSE.md 🎉 Initial commit Sep 17, 2018
README.md format: fix ToC white space May 27, 2019
SECURITY.md Create SECURITY.md Jul 17, 2019
docker-compose.v6.yml docs: update all references for ES v7.x May 20, 2019
docker-compose.yml docs: update all references for ES v7.x May 20, 2019
package.json chore: update reactivesearch version + batteries Oct 7, 2019
server.js feat: add custom server for docker image Jun 5, 2019
webpack.config.js fix: importer login issue Feb 14, 2019
webpack.config.site.js reduce image size from 300MB to 100MB Dec 8, 2018
yarn.lock chore: update reactivesearch version + batteries Oct 7, 2019

README.md

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. Modern UI Elements
    d. Import JSON or CSV Data
    e. 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.

Starting with v3.0, we support the ability to connect to multiple indexes. You can also globally search across your indexes using global search bar.

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. With all the native data types we have . Global searchbar allows you to perform text search across your dataset.

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

Modern UI elements

Pagination

It's not uncommon to have thousands of documents in your index. Dejavu supports paginated view which also allows you to change page size.

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

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 2.0+) Elasticsearch plugin
Modern UI React 16.6. jQuery 1.6.1, slightly stodgy Angular 1.x ExtJs, a bit stodgy Node.JS, Hapi, Jade
Browser features CRUD, data filters Read data, full-text search Data view for a single type Read view, visualizations, charting
Data import/export ✔️ JSON, CSV Only export, no CSV
Search preview Visually build and test search UI
License MIT Apache 2.0 MIT Apache 2.0 Apache 2.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

We just hit the 3.0.0 release:

  • Rewrite dejavu browser for high performance when browsing large datasets
  • Add support for browsing multiple indexes
  • Powerful filtering of data with field level facet based filters and a global search
  • Built on React 16.6 and future compatible with React 17
  • A more intuitive data editing experience (in addition to the raw JSON, we now show a relevant UI field with validations)

🔜 Roadmap beyond 3.0.0:

  • Improve test coverage
  • Mobile friendly viewing and editing experience
  • Additional filtering support (add range filters, date filters)

5. Build Locally

See the contributing guidelines.


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 3.3.0 can be used by specifying the docker run -p 1358:1358 appbaseio/dejavu:3.3.0 command.

Cross-origin resource sharing (CORS)

To make sure you enable CORS settings for your Elasticsearch instance, add the following lines in the elasticsearch.yml 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-compose, you can refer to the example reference here.

If you are running your Elasticsearch with docker, you can use the following flags to pass the custom CORS configuration:

Elasticsearch 2.x
docker run --name elasticsearch -p 9200:9200 -d 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 5.x
docker run --name elasticsearch -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
Elasticsearch 6.x
docker run -p 9200:9200 -d elasticsearch docker.elastic.co/elasticsearch/elasticsearch-oss:6.5.4 -Ehttp.port=9200 -Ehttp.cors.enabled=true -Ehttp.cors.allow-origin=http://localhost:1358 -Ehttp.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization -Ehttp.cors.allow-credentials=true
Elasticsearch 7.x
docker run -d --rm --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "http.cors.enabled=true" -e "http.cors.allow-origin=*" -e "http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization" -e "http.cors.allow-credentials=true" docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.1

Hosted Alternatives

dejavu can also be run via hosted app at https://dejavu.appbase.io 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

You can’t perform that action at this time.