Scripting capabilities of Elasticsearch
Elasticsearch has a few functionalities where scripts can be used. You've already seen examples such as updating documents and searching. We will also use the scripting capabilities of Elasticsearch when we discuss aggregations. Even though scripts seem to be a rather advanced topic, we will look at the possibilities offered by Elasticsearch. That's because scripts are priceless in certain situations.
Elasticsearch can use several languages for scripting. When not explicitly declared, it assumes that Groovy (www.groovy-lang.org/) is used. Other languages available out of the box are Lucene expression language and Mustache (https://mustache.github.io/). Of course we can use plugins, which will make Elasticsearch understand additional scripting languages, such as JavaScript, MVEL, and Python. The thing worth mentioning is that independent from the scripting language that we choose, Elasticsearch exposes objects that we can use in our scripts. Let's start...