Elasticsearch Cheat Sheet and Short Examples

Quick short, Elasticsearch cheat API End-Point calls that takes a while to remember.  If I have missed your favourite or want to make a recommendation to add in please do leave comment


# Show all indices
GET /_cat/indices?v-
# cluster health state
GET /_cluster/health
# Show all nodes
GET /_cat/nodes?

# Show largest Index. Leverages the _CAT api
curl 'localhost:9200/_cat/indices?bytes=b' | sort -rnk8 | grep -v marvel,kibana



# Bulk Indexing Example
POST /factory/_bulk
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"swift","make":"suzuki", "mark":1, "release_year":"1998-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"swift","make":"suzuki", "mark":2, "release_year":"2003-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"baleno","make":"suzuki", "mark":1, "release_year":"2000-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"focus","make":"ford","mark":1, "release_year":"2001-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"focus","make":"ford","mark":2, "release_year":"2007-01-01"}
	  {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"rs","make":"ford","mark":2, "release_year":"2011-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"rav4","make":"toyota","mark":3, "release_year":"2009-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"mondeo","make":"ford","mark":2, "release_year":"2007-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
	 { "model":"st","make":"ford","mark":1, "release_year":"2007-01-01"}
	 {"index":{"_index":"factory", "_type":"cars"}}
 { "model":"5 series","make":"bmw","mark":3, "release_year":"2009-01-01"}


Index Management

PUT /my_index/_settings
  "index": {
    "number_of_replicas": 4
# Add a single alias
PUT /lmg_sem_v4/_alias/lmg
# Move Shard to another node
POST /_cluster/reroute
    "commands" : [ {
        "move" :
              "index" : "amg_sem_v12", "shard" : 0,
              "from_node" : "UK-SEARCH-STG-02", "to_node" : "UK-SEARCH-STG-01"

Index Cloning

From ElasticSearch 2.3 you you may now use the built in _reindex API to re-index data

POST /_reindex
  "source": {
    "index": "my-index"
  "dest": {
    "index": "my-new-index"


Cloning with a filter/query

POST /_reindex
  "source": {
    "index": "my-index",
    "query": {
      "term": {
        "has-index-cloning-with-filter-on": true
  "dest": {
    "index": "my-new-index"


# Show cluster-wide Recovery state
GET /_recovery?pretty&human
GET /_recovery?pretty&human&active_only=true
# show tabular cluster-wide status summary
GET /_cat/recovery?v
# Show me all snapshots
GET /_snapshot/_all
# Show settings details of snapshot repo "my_backup"
GET /_snapshot/my_backup
# Show all snapshot details of repo "my_backup"
GET /_snapshot/my_backup/_all
# Delete snapshot "snapshot_2015_09_07-13_50_48" from repo "prod-0009"
DELETE /_snapshot/prod-0009/snapshot_2015_09_07-13_50_48/
# Register Repo + no need to verify permission on path location
PUT /_snapshot/prod-0009?verify=false
   "type": "fs",
   "settings": {
      "location": "/vagrant/prod-0009",
      "compress": true,
      "max_snapshot_bytes_per_sec": "200000000",
      "max_restore_bytes_per_sec": " 500mb"
# Take Snapshot of just "cmg_sem_v6" index
PUT /_snapshot/one-off-repo?wait_for_completion=true
  "indices": "cmg_sem_v6",
  "ignore_unavailable": "true",
  "include_global_state": false
# Restore Snapshots of all index + global state
POST /_snapshot/prod-0009/snapshot_2015_09_11-10_23_29/_restore
# Restore Snapshots of only "log_river" index
POST /_snapshot/prod-0009/snapshot_2015_09_11-10_23_29/_restore
  "indices": "log_river",
  "rename_pattern": "index_pattern",  
  "rename_replacement": "restored_pattern" 
  "ignore_unavailable": "true",
  "include_global_state": false
# Speed up Recovery Speed
PUT /_cluster/settings
   "persistent": {
      "cluster.routing.allocation.node_concurrent_recoveries": "5",
      "indices.recovery.max_bytes_per_sec": "200mb",
      "indices.recovery.concurrent_streams": 5

Having trouble With .Marvel* index creation?

# You can view the current settings template with :
curl -XGET localhost:9200/_template/marvel
# Modify settings with:
PUT /_template/marvel_custom
    "order" : 1,
    "template" : ".marvel*",
    "settings" : {
        "number_of_replicas" : 0,
        "number_of_shards" : 5


More here

Move/Route shards to another elasticsearch node

POST /_cluster/reroute
    "commands" : [ {
        "move" :
              "index" : "amg_sem_v12", "shard" : 0,
              "from_node" : "UK-SEARCH-STG-02", "to_node" : "UK-SEARCH-STG-01"

Top Elasticsearch plugins

These are my top must have Elasticsearch plugins, from monitoring clusters to moving indices and managing Elasticsearch snapshots.  If you are here you may already know of Elasticsearch’s marvel plugin, with combination with Sense you mostly have all you will need to manage Elasticsearch.  If like me Marvel and Sense are not enough for your workflow or just curious about what plugins by the Elasticsearch community can offer you please read on.

NOTE: Some of these plugins are not being maintained anymore since site plugins got removed from new version of Elasticsearch.  I will soon update this list with workaround/alternatives.  Meanwhile you may follow the links to the plugins landing pages of for the latest update/news/alternative.



Elasticseach head cluster OverviewBy default the first thing I will always install.  Most times even before I install the official elastic search Marvel plugin suits.

  • Not quite polished for aesthetics but does what it needs to do very very good and that is quick snap via of the status of your cluster, nodes, shards etc.
  • Quick handy drop-down buttons to drop an index, alias or set and alias.
  • You can also easily write up your own queries and view them as tables or json.
  • Follow/contribute to the project on GitHub – elasticsearch-head



elasticsearch kopf cluster view

Another lovely tool aimed more at administering your elasticsearch cluster.  Very light weight and covers commonly peformed tasks, by no means comprehensive but its getting better and better.  Best thing this have over HQ is the REST client which you can leverage to explore most of what Elasticsearch API exposes.

Note this can also be run locally without being installed as a plugin albeit some browser limitations:

git clone git://github.com/lmenezes/elasticsearch-kopf.git
cd elasticsearch-kopf
git checkout <a given branch final version>
open _site/index.html

Note this can also be run locally without being installed as a plugin albeit some browser limitations:




elasticsearch whatson

Aimed at elasticsearch cluster monitoring, visualisation and inspection with lots of stats. Can be used without installing at Whatson Git Hub Page.  Most Useful in large clusters.




HQ Elastic clusterhealth


  • Performance metrics reports
  • Monitoring
  • Charts
  • Open-source project.
  • Elastic search management tool.
  • Available as a Plug/Hosted/Self-Hosted war
  • Query functionality (limited, currently not customisable)
  • Follow/contribute to the project on GitHub – elasticsearch-HQ

For ElasticHQ users usage Stats  go here


Big Desk


bigdesk cpu

In short Big Desk pulls data from Elasticsearch via REST API calls in convert this to numerous charts of statistics about your elasticsearch cluster.

  • can be installed as a plugin
  • download and run locally or
  • run from the web
  • follow/contribute to the project on GitHub-bigdesk








  • Priceless tool for tuning results relevancy.  Exposes easy means to testing your Analysers, mappings and queries anatomy.
  • Fully dedicated tab for testing Tokenisers, Analysers and most importantly your Queries
  • This is a a tool I will highly recommend for learning as it quickly helps you learn how elasticsearch interpret, parses and match/not queries
  • Shame this plugin has not been updated in recent time but feel free to contribute at Git-hub elasticsearch-inquisitor

Mac Development Environment Setup

Over the years the list bellow has become my go to reference for setting up a new Mac.  These are the bare bone tools I will recommend for some serious development on a Mac, especially around Java and the open source world.  Read through, make it yours and add to it.

Firstly, as always with a Mac you’ll need to agree to apple’s Xcode terms to make full use of the terminal.
#go to your terminal and run :
xcode-select --install


Install iTerm.

An extremely great alternative to the in-built mac terminal



Add .profile settings for syntax terminal highlighting.  Why not? After all we spent quite a lot of time on bash terminals why not make them more interesting.  It might just help prevent you from typing the wrong command in the incorrect terminal.

Example Bash_Profile:

# Bash Colors
export TERM="xterm-color"
export CLICOLOR="true"
export LSCOLORS="exfxcxdxbxegedabagacad"

# Bash Prompt customisation with current location
export PS1='\[\033[01;35m\]\u\[\033[34m\]@\[\033[36m\]\h\[\033[00m\]:\[\033[01;33m\]\w\[\033[31m\]$(git branch -l 2&gt;/dev/null | sed -n s/^*//p) $(hg branch 2&gt;/dev/null) \$\[\033[00m\]'

#  Java Home Over-ride
#export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_45`
#export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_79`


Sublime Text

Sublime has gone pass the test of time for the new kid in the block text editor to a must have for all developers and dev-ops.  Install Sublim from here and its package manager


Font Made for Code

Install a equal width font like: Adobe Source Pro Font


Latest Python tools

Install python from here PIP command


Maven Installation

Download maven and unzip to preferred location


Set Path in profile:

  • ~/.bash_profile


  • Post Configuration… set’up your maven .m2 settings.xml file
  • See more Installation Instructions here


Package manager

There are many options there but I will strongly recommend Brew :
Installs the stuff that apple did not, With Brew from here


# Example installation commands, as simple as:
brew install python
brew install git
brew install ruby
brew install node
brew install mongo

Automate Enabling/Disabling Hidden Files on a Mac

# show/hide hidden files
alias showFiles='defaults write com.apple.finder AppleShowAllFiles YES; killall Finder /System/Library/CoreServices/Finder.app'
alias hideFiles='defaults write com.apple.finder AppleShowAllFiles NO; killall Finder /System/Library/CoreServices/Finder.app'


Mac Host File Edit

Go here to edit your host file, blocking out distracting sites such as facebook, twitter, hacker news e.t.c.  Simply re-route them back to localhost:
# Example entry to route facebook to an invalid ip facebook.com

# Example entry to route facebook to your internal ticketing system
jira.intranet facebook.com

Springpad is shutting down on June 25th


Good Bye Spring Pad.  Springpad is shutting down on June 25th

My First thought

“Well really! that’s not a surprise”

My First feeling

“deeply sadden”

Over the years Springpad has been a very reliable companion to myself and many others in my circles. Now time to make use of the export features and move on. But first a big THANK YOU to all that made Springpad the wonderful app it was.  The review and think twice about where next you are taking your data….

Two options:

  1. Migrate Your Data to other services
  2. Export Your Data
    1. HTML file
    2. JSON file for Importing to Other Services

Best of luck. I surely will need it..   I will update if i ever find a good enough alternative…

For More

Where are the engineers headed to?  … you guessed it.. Google!

IntelliJ – Configuring JVM options and platform properties

IntelliJ JVM Options


IDE_HOME\bin\<product>[bits][.exe].vmoptions file. 


IntelliJ IDEA Platform Properties

File location :



source: https://intellij-support.jetbrains.com/entries/23395793

IMAP and SMTP settings for Outlook/Live Mail

 IMAP and SMTP Settings

For Thunderbird mail and other supported app clients

  • Incoming (IMAP) Server
    • Server address: imap-mail.outlook.com
    • Port: 993
    • Encrypted Connection: SSL
  • Outgoing (SMTP) Server
    • Server address: smtp-mail.outlook.com
    • Port: 25 (or 587 if 25 is blocked)
    • Authentication: Yes
    • Encrypted Connection: TLS
  • User name: Your email address
  • Password: Your password


More here: http://windows.microsoft.com/en-GB/windows/outlook/send-receive-from-app

Manually Adding Oracle JDBC to Maven Repo

Thanks to Oracle, Oracle JDBC jars cant be downloaded from maven repositories… therefore, your pom will through this error :

Missing artifact com.oracle:ojdbc14:jar:


Find specific version on the Oracle site or download from others sites like this.

Then place in your .m2 folder and refresh your pom.


Maven will magically resolve the other related files such as the repository file, pom file e.t.c:

or you can manually cd to the downloaded location and lunch the maven command to install 3rd party libraries:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true

Java EE Environment Setup Links


Application Description
Eclipse IDE
Java JDK development tools
Tomcat Application Server
Subclipse Source Control eclipse plugin for subversion
Maven Tools create projects and manage dependencies handle class paths for dependences, build tool, compile package, release and documentation
Maven-Eclipse-Plugin (m2eclipse) Note: Currently installed with latest Eclipse version (3.6 Helios)
 Spring Tool Suite


Environment Variables Continue reading “Java EE Environment Setup Links”