• Stars
    star
    8,366
  • Rank 4,393 (Top 0.09 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Web UI for Elasticsearch and OpenSearch: Import, browse and edit data with rich filters and query views, create reference search UIs.

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 and OpenSearch. 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, 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 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.6.0 can be used by specifying the docker run -p 1358:1358 appbaseio/dejavu:3.6.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:

OpenSearch 1.x
docker run --name opensearch --rm -d -p 9200:9200 -e http.port=9200 -e discovery.type=single-node -e http.max_content_length=10MB -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 -e plugins.security.disabled=true opensearchproject/opensearch:1.2.4

You can run both Opensearch and Dejavu together with:

docker-compose up -d

Elasticsearch 8.x
docker run -d --rm --name elasticsearch -p 127.0.0.1:9200:9200 -e http.port=9200 -e discovery.type=single-node -e http.max_content_length=10MB -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 -e network.publish_host=localhost -e xpack.security.enabled=false docker.elastic.co/elasticsearch/elasticsearch:8.1.0

You can run both Elasticsearch 8.1.0 and Dejavu together with:

docker-compose -f docker-compose-v8.yml up -d

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.10.2

You can run both Elasticsearch 7.10.2 and Dejavu together with:

docker-compose -f docker-compose-v7.yml up -d

Hosted Alternatives

dejavu can also be run as a hosted app at https://dejavu.appbase.io.


More Repositories

1

reactivesearch

Search UI components for React and Vue
JavaScript
4,899
star
2

mirage

🎨 GUI for simplifying Elasticsearch Query DSL
TypeScript
2,202
star
3

reactivemaps

A data aware UI components library for building realtime maps
JavaScript
941
star
4

gem

💎 GUI for Data Modeling with Elasticsearch
JavaScript
662
star
5

Docbase

Turn .md docs into beautiful sites
JavaScript
592
star
6

abc

Power of appbase.io via CLI, with nifty imports from your favorite data sources
Go
472
star
7

reactivesearch-api

API Gateway for Elasticsearch with declarative querying and out-of-the-box access controls
Go
190
star
8

searchbox

Lightweight and performance oriented search box UI component libraries for React, Vue, React Native, JS and Flutter
JavaScript
182
star
9

playground

A storybook playground for ReactiveMaps and ReactiveSearch
JavaScript
47
star
10

appbase-js

appbase.io search client library for JavaScript
JavaScript
41
star
11

Docs

ReactiveSearch Developer Hub
JavaScript
33
star
12

reactivecore

Core architecture of reactive UI libraries
JavaScript
33
star
13

dashboard

ReactiveSearch cloud dashboard
JavaScript
32
star
14

appbase-droid

Elasticsearch and appbase.io library for Android (and Java)
Java
24
star
15

appbase-swift

Swift Library for appbase.io and ElasticSearch
Swift
24
star
16

reactivebase

Data components for building reactive UIs
JavaScript
18
star
17

twitterclone

twitter clone built with appbase.io and AngularJS
JavaScript
16
star
18

designkit

Design kit for appbaseio ecosystem
JavaScript
14
star
19

esc

ESC: ElasticSearch Cookbook, with example recipes 📘
JavaScript
13
star
20

meetupblast

Find out what great meetups people are going to!
JavaScript
12
star
21

reactive-manual

Docs for ReactiveSearch (and Maps)
JavaScript
12
star
22

vue-reactivesearch

This project has been moved to https://github.com/appbaseio/reactivesearch/
JavaScript
11
star
23

reactivesearch-api-docker

HTML
9
star
24

heartbeat-frontend

Heartbeat: Transform REST API endpoints to streaming APIs
JavaScript
7
star
25

vue-playground

A storybook playground for Vue ReactiveSearch
Vue
7
star
26

batteries

Pluggable modules for mappings, search preview and analytics
JavaScript
7
star
27

go-appbase

An ElasticSearch + appbase.io client library (includes data streaming support) for Go
Go
6
star
28

reactivebase-native

Native data components for building reactive UIs
JavaScript
6
star
29

flutter-searchbox

SearchBox UI component library for flutter
Dart
6
star
30

appbase-redis

A realtime events-based document store
JavaScript
5
star
31

reactivesearch-realm-function

Crate for ReactiveSearch API which creates a Realm function based API gateway
TypeScript
5
star
32

docbase-manual

Manual for docbase
HTML
5
star
33

vue-searchbox

JavaScript
4
star
34

generator-docbase

Docbase generator
JavaScript
4
star
35

react-searchbox

JavaScript
3
star
36

reactive-maps-onboarding

JavaScript
3
star
37

searchbox-js

JavaScript
3
star
38

streaming-transporter

Shell
3
star
39

analytics.js

Universal analytics library for appbase.io / ElasticSearch
JavaScript
3
star
40

pipelines-action

GitHub Action to let users create pipelines from a repository directly
JavaScript
3
star
41

grunt-docbase

Grunt plugin to generate html files from your docbase project.
JavaScript
2
star
42

EScompanion

A companion installation app for Autopilot
Go
2
star
43

statuspage

HTML
2
star
44

android-searchbox

Android Search UI widget to build customizable mobile search layouts
Java
2
star
45

appbase.js-deprecate

JavaScript Wrapper for Appbase Rest API
JavaScript
2
star
46

statusp

Python
1
star
47

reactivesearch-shopify-plugin

Shopify Plugin for ReactiveSearch
JavaScript
1
star
48

faceted-search-template

JavaScript
1
star
49

oasis

Oasis
JavaScript
1
star
50

mitter

JavaScript
1
star
51

serverless-search

Dockerfile
1
star
52

appbase-hackathon-deprecate

1
star
53

geo-search-template

JavaScript
1
star
54

flutter-searchbox-typeahead-example

Dart
1
star
55

clients

An experiment in auto-generated REST clients.
1
star
56

pipelines-template

Template repo to get started with ReactiveSearch Pipelines Action
JavaScript
1
star
57

customization-with-reactivesearch

JavaScript
1
star
58

appbaseio-heroku

Dockerfile
1
star
59

reactivesearch-api-k8s

1
star
60

searchbook

Search onboarding
JavaScript
1
star