In the previous chapter, we extensively talked about querying in Elasticsearch. We started by looking at how default Apache Lucene scoring works, through how filtering works, and we've finished with looking at which query to use in a particular situation. In this chapter, we will continue with discussions regarding some of the Elasticsearch functionalities connected to both querying and data analysis. By the end of this chapter, we will have covered the following areas:
What query rescoring is and how you can use it to optimize your queries and recalculate the score for some documents
Controlling multimatch queries
Analyzing your data to get significant terms from it
Grouping your documents in buckets using Elasticsearch
Differences in relationship handling when using object, nested documents, and parent–child functionality
Extended information regarding Elasticsearch scripting such as Groovy usage and Lucene expressions