A web front end for an elastic search cluster
JavaScript CSS Other
Latest commit e301f9a Jan 9, 2017 @mobz committed on GitHub Merge pull request #298 from code0x9/master
added docker running instruction



A web front end for an Elasticsearch cluster


Installing and Running

There are two main ways of running and installing elasticsearch-head

Running as a plugin of Elasticsearch

  • Install elasticsearch-head:
    – for Elasticsearch 5.x:
    site plugins are not supported. Run elasticsearch-head as a standalone server
    – for Elasticsearch 2.x – 4.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.9:
    sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head/0.9
  • open http://localhost:9200/_plugin/head/

This will automatically download the latest 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

Note on different Elasticsearch installation path:

  • If you’ve installed the .deb package, then the plugin executable will be available at /usr/share/elasticsearch/bin/plugin.
  • If you’ve installed Elasticsearch via Homebrew, plugin executable will be available at /usr/local/Cellar/elasticsearch/(elasticsearch version)/libexec/bin/plugin.

Running with built in server

This will start a local webserver running on port 9100 serving elasticsearch-head

  • Best option if you are likely to connect to several different clusters

Running with docker

  • enable cors by adding http.cors.enabled: true in elasticsearch configuration. Don’t forget to 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. Check Elasticsearch documentation on this parameter: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html#modules-http
  • start elasticsearch-head
    – for Elasticsearch 5.x:
    docker run -p 9100:9100 mobz/elasticsearch-head:5
    – for Elasticsearch 2.x – 4.x:
    docker run -p 9100:9100 mobz/elasticsearch-head:2
    – for Elasticsearch 1.x:
    docker run -p 9100:9100 mobz/elasticsearch-head:1
  • open http://localhost:9100/


Running from the filesystem

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, use it on an iPad, or put it on a floppy disk and carry it with you.

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 plugin or a reverse proxy )
  • auth_password basic auth password as above (note: without additional security layers, passwords are sent over the network in the clear )


To contribute to elasticsearch-head you will need the following developer tools

  1. git and a github account
  2. node
  3. grunt-cli
  4. (to run jasmine tests) phantomjs


  1. create a fork of elasticsearch-head on github
  2. clone your fork to your machine
  3. cd elasticsearch-head
  4. npm install # downloads node dev dependencies
  5. 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.

Contributing an Internationalisation

To contribute an internationalisation

  1. Follow “Contributing” instructions above
  2. Find your 2-character ISO 639-1 language code
  3. edit site/index.html to add your 2 letter language code to the data-langs attribute of this line @here">@
  4. make a copy of src/app/langs/en_strings.js prefixed with your language code
  5. convert english strings and fragments to your language. Formatting Rules
  6. Submit a pull request

ClusterOverview Screenshot