Awesome
<a href="https://codeclimate.com/github/appbaseio/mirage"><img src="https://codeclimate.com/github/appbaseio/mirage/badges/gpa.svg" /></a>
Mirage: 🔎 GUI for Elasticsearch Queries
- Mirage: Intro
- Features
- Roadmap
- Build Locally
- How to contribute
- Get Mirage
a. Hosted
b. Chrome Extension
c. Appbase.io
d. Run with Docker
e. Elasticsearch Plugin (deprecated)
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.
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.
<br>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.
- Mirage provides two ways to add compound query clauses,
Add Conditions
allows adding additional clauses within the same query andNested Query
allows adding a nested query clause.
- Queries can be saved for later reuse. They can also be captured and shared by copying the URL.
- See docs for any query from within the app.
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 | ✓ GeoDistance | ➕ MoreLikeThis | ✓ SpanTerm |
✓ Multi-match | ✓ Terms | ✓ HasChild | ✓ GeoBoundingBox | ➕ Template | ➕ SpanMulti |
✓ Query String | ✓ Range | ✓ HasParent | ✓ GeoShape | ❌ Script | ✓ SpanFirst |
✓ Simple Query String | ✓ Exists | ✓ ParentId | ✓ 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.
<br>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
<br>
5. How to Contribute
- Find a query that can be supported from the roadmap.
- Fork the mirage repo and update in "dev" branch.
- Create the query files.
- Build locally and run
npm test
. - Submit a PR!
6. Get Mirage
Mirage is available as a hosted app and as a chrome extension.
Use hosted app
or
Get the Chrome extension
or
appbase.io dashboard
Every app in appbase.io has a query explorer view, which uses mirage.
or
Run with docker
Works with Elasticsearch versions 1.x, 2.x and 5.x.
docker run -p 3030:3030 -d appbaseio/mirage
CORS settings: 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
Install as Elasticsearch Plugin
[Deprecated] Works with Elasticsearch versions 1.x and 2.x. Site plugins have been disabled starting v5.0. We recommend running mirage with docker instead.
plugin install appbaseio/mirage
Note:
Elasticsearch has a CORS header issue with v2.3.0, use v2.3.2 and above.
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