Skip to content

metagrover/mirage

Β 
Β 

Repository files navigation

Mirage: The missing query explorer for Elasticsearch

  1. Mirage: Intro
  2. Features
  3. Roadmap
  4. Build Locally
  5. How to contribute
  6. Get Mirage

1. Mirage: Intro

The Elasticsearch query DSL supports 100+ query APIs ranging from full-text search, numeric range filters, geolocation queries to nested and span queries.

Mirage is a modern, open-source web based query explorer for Elasticsearch.

2-min Intro to Mirage

It offers a blocks based GUI for composing Elasticsearch queries and comes with an on-the-fly transformer to show the corresponding JSON query API of Elasticsearch.


2. Features

  • Mirage's GUI building blocks offer a smart way to creating queries. It uses the index's Elasticsearch mappings and the selected field's datatype to show only the applicable queries in the dropdown.

Watch Queries being built in realtime


  • Mirage provides two ways to add compound query clauses,
    • Add Conditions allows adding additional clauses within the same query and
    • Nested Query allows adding a nested query clause.

Intuitively layer complexity to your queries


  • Queries can be saved for later reuse. They can also be captured and shared by copying the URL.

Save queries for later reuse

  • See docs for any query from within the app.

Browse docs from within Mirage


3. Roadmap

Mirage works with an Elasticsearch 2.x index currently. Below is the roadmap for query support.

βœ“ indicates queries already supported.
βž• indicates queries we would like to support and see contributions for.
❌ indicates queries that can't be supported currently.

Full-text Queries Term Level Queries Joining Queries Geo Queries Specialized Queries Span Queries
βœ“ Match βœ“ Term βž• Nested βž• GeoShape βž• MoreLikeThis βž• SpanTerm
βœ“ Multi-match βœ“ Terms βž• HasChild βž• GeoBoundingBox βž• Template βž• SpanMulti
βœ“ Query String βœ“ Range βž• HasParent βž• GeoDistance ❌ Script βž• SpanFirst
βœ“ Simple Query String βœ“ Exists βž• GeoDistanceRange βž• SpanNear
βœ“ Common Terms βœ“ Missing βž• GeoPolygon βž• SpanOr
βœ“ Prefix βž• GeoHashCell βž• SpanNot
βœ“ Wildcard βž• SpanContaining
βœ“ Regexp βž• SpanWithin
βœ“ Fuzzy
βœ“ Ids
❌ Type

Besides broadening the query support, we would like to see Mirage support Elasticsearch v5.0.


4. Build Locally

$ npm install 
$ bower install
$ npm start

This will start a local webserver running on port 3030 serving mirage locally.

Tests

$ npm test

will fire up the jasmine tests.

master branch: Elasticsearch Plugin

$ npm run build_es_plugin

chrome-extension branch: Chrome extension

$ npm run build_chrome_extension

5. How to Contribute

  1. Find a query that can be supported from the roadmap.
  2. Fork the mirage repo and update in "dev" branch.
  3. Create the query files.
  4. Build locally and run npm test.
  5. Submit a PR!

6. Get Mirage

Mirage is available as a hosted app and as a chrome extension.

or

or

Every app in appbase.io has a query explorer view, which uses mirage.

Mirage Gif

or

Install as Elasticsearch Plugin

plugin install appbaseio/mirage

Note: 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.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true

After installing the plugin, start the elasticsearch service and visit the following URL to access it.

http://127.0.0.1:9200/_plugin/mirage

Note: If you use Elasticsearch from a different port, the URL to access and the http.cors.allow-origin value in the configuration file would change accordingly.

Mirage can be used along with ⊞ DejaVu to browse data and perform CRUD operations inside an Elasticsearch index.


Proudly built with

About

πŸ”Ž GUI for Elasticsearch Queries

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 73.9%
  • CSS 11.7%
  • HTML 11.4%
  • JavaScript 3.0%