mobz / elasticsearch-head
A web front end for an elastic search cluster
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing mobz/elasticsearch-head in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Summary (README)
Previewh1. elasticsearch-head
h2. A web front end for an Elasticsearch cluster
h3. "http://mobz.github.io/elasticsearch-head":http://mobz.github.io/elasticsearch-head
h2. Running
There are multiple ways of running elasticsearch-head.
h4. Running with built in server
-
@git clone git://github.com/mobz/elasticsearch-head.git@
-
@cd elasticsearch-head@
-
@npm install@
-
@npm run start@
This will start a local webserver running on port 9100 serving elasticsearch-head
h4. Running with docker
-
for Elasticsearch 5.x: @docker run -p 9100:9100 mobz/elasticsearch-head:5@
-
for Elasticsearch 2.x: @docker run -p 9100:9100 mobz/elasticsearch-head:2@
-
for Elasticsearch 1.x: @docker run -p 9100:9100 mobz/elasticsearch-head:1@
-
for fans of alpine there is @mobz/elasticsearch-head:5-alpine@
h4. Running as a Chrome extension
- Install "ElasticSearch Head":https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/ from the Chrome Web Store.
- Click the extension icon in the toolbar of your web browser.
- Note that you don't need to "enable CORS":#enable-cors-in-elasticsearch with this method.
h4. Running as a plugin of Elasticsearch (deprecated)
-
for Elasticsearch 5.x, 6.x, and 7.x: site plugins are not supported. Run "as a standalone server":#running-with-built-in-server
-
for Elasticsearch 2.x: @sudo elasticsearch/bin/plugin install mobz/elasticsearch-head@
-
for Elasticsearch 1.x: @sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head/1.x@
-
for Elasticsearch 0.x: @sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head/0.9@
This will automatically download the appropriate version of elasticsearch-head from github and run it as a plugin within the elasticsearch cluster. In this mode elasticsearch-head automatically connects to the node that is running it
h4. Running with the local proxy
This is an experimental feature which creates a local proxy for many remote elasticsearch clusters
- configure clusters in proxy/clusters
- create a file per remote cluster you want to connect to ( see @localhost9200.json@ as example )
- requires node >= 6.0
- @npm install@
- @npm run proxy@
At the moment it only works with @grunt server@ running on http://localhost:9100
h4. Alternatives
- File System: elastisearch-head is a standalone webapp written in good-ol' html5. This means, you can put it up on any webserver, run it directly from the filesystem. It'll even fit on a floppy disk.
- DEB package: There is an unofficial deb package. the plugin executable will be available at @/usr/share/elasticsearch/bin/plugin@.
- Homebrew: There is an unofficial keg. The plugin executable will be available at @/usr/local/Cellar/elasticsearch/(elasticsearch version)/libexec/bin/plugin@.
h3. Connecting to elasticsearch
By default elasticsearch exposes a http rest API on port 9200 which elasticsearch-head connects to.
h4. Enable CORS in elasticsearch
When not running as a Chrome extension or as a plugin of elasticsearch (which is not even possible from version 5), you must enable "CORS":https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html in elasticsearch, or else your browser will reject elasticsearch-head's requests due to violation of the same-origin policy.
In elasticsearch configuration;
- add @http.cors.enabled: true@
- you must also set @http.cors.allow-origin@ because no origin allowed by default. @http.cors.allow-origin: "*"@ is valid value, however it's considered as a security risk as your cluster is open to cross origin from anywhere.
h4. Basic Authentication
elasticsearch-head will add basic auth headers to each request if you pass in the "correct url parameters":#url-parameters You will also need to add @http.cors.allow-headers: Authorization@ to the elasticsearch configuration
h4. x-pack
elasticsearch x-pack requires basic authentication and CORS as described above. Make sure you have the correct CORS setup and then open es-head with a url like "http://localhost:9100/?auth_user=elastic&auth_password=changeme"
h4. URL Parameters
Parameters may be appended to the url to set an initial state eg. @head/index.html?base_uri=http://node-01.example.com:9200@
- @base_uri@ force elasticsearch-head to connect to a particular node.
- @dashboard@ experimental feature to open elasticsearch-head in a mode suitable for dashboard / radiator. Accepts one parameter @dashboard=cluster@
- @auth_user@ adds basic auth credentials to http requests ( requires "elasticsearch-http-basic":https://github.com/karussell/elasticsearch-http-basic plugin or a reverse proxy )
- @auth_password@ basic auth password as above (note: without "additional security layers":http://security.stackexchange.com/questions/988/is-basic-auth-secure-if-done-over-https, passwords are sent over the network in the clear )
- @lang@ force elasticsearch-head to use specified ui language (eg: en, fr, pt, zh, zh-TW, tr, ja)
h4. Contributing
To contribute to elasticsearch-head you will need the following developer tools
git and a "github":https://github.com/ account
"node ( including npm )":http://nodejs.org/download
"grunt-cli":http://gruntjs.com/getting-started
(to run jasmine tests) "phantomjs":http://phantomjs.org
Then
create a fork of elasticsearch-head on github
clone your fork to your machine
@cd elasticsearch-head@
@npm install@ # downloads node dev dependencies
@grunt dev@ # builds the distribution files, then watches the src directory for changes (if you have an warning like "Warning: Task "clean" failed. Use --force to continue.", well use --force ;) )
Changes to both _site and src directories must be committed, to allow people to run elasticsearch-head without running dev tools and follow existing dev patterns, such as indenting with tabs.
h5. Contributing an Internationalisation
- Simplified Chinese by "darkcount":https://github.com/hangxin1940
- Traditional Chinese by "kewang":https://github.com/kewang
- English (primary) by "Ben Birch":https://twitter.com/mobz
- French by "David Pilato":https://twitter.com/dadoonet
- Portuguese by "caiodangelo":https://github.com/caiodangelo
- Turkish by "Cemre Mengu":https://github.com/cemremengu
- Japanese by "Satoshi Kimura":https://github.com/satoshi-kimura
- Vietnamese by "Du Tran":https://github.com/quangdutran
To contribute an internationalisation
Follow "Contributing" instructions above
Find your 2-character "ISO 639-1 language code":http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
edit _site/index.html to add your 2 letter language code to the data-langs attribute of this line @<script src="_site/i18n.js" data-baseDir="_site/lang" data-langs="en,fr,your_lang_here"></script>@
make a copy of @src/app/langs/en_strings.js@ prefixed with your language code
convert english strings and fragments to your language. "Formatting Rules":http://docs.oracle.com/javase/tutorial/i18n/format/messageintro.html
Submit a pull request
!http://mobz.github.com/elasticsearch-head/screenshots/clusterOverview.png(ClusterOverview Screenshot)!