Using the function score query
This kind of query is one of the most powerful queries available, because it allows extensive customization of scoring algorithm. The function score query allows defining a function that controls the score of the documents that are returned by a query.
Generally, these functions are CPU intensive and executing them on a large dataset requires a lot of memory, but computing them on a small subset can significantly improve the search quality.
The common scenarios used for this query are:
Creating a custom score function (with decay function, for example)
Creating a custom boost factor, for example, based on another field (that is, boosting a document by distance from a point)
Creating a custom filter score function, for example, based on scripting Elasticsearch capabilities
Ordering the documents randomly
Getting ready
You need an up-and-running Elasticsearch installation as we described in the Downloading and installing Elasticsearch recipe in Chapter 2, Downloading...