Knowing how to collect, parse, enrich, and index data in Elasticsearch is important, but knowing how to ask the data precise questions is even more crucial. After all, you can’t spell “Elasticsearch” without “search!” Whether you are using Elasticsearch for site search, product search, operational analytics, or business intelligence, knowing how to formulate complex search queries is vital to deriving value from all that data you’ve managed to collect, parse, enrich, and index. In this hands-on lab, you will complete the following tasks:
* Search for a specific term within a field
* Apply a search filter to reduce the searchable data set
* Sort the resulting data
* Highlight the search term in the results
* Paginate the search results
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a search query that meets the requirements of Query 1.
Use the Kibana console tool to execute the following:
GET shakespeare/_search { "size": 20, "sort": [ { "play_name": { "order": "asc" } }, { "line_id": { "order": "asc" } } ], "query": { "bool": { "must": [ { "term": { "type.keyword": { "value": "scene" } } }, { "match": { "text_entry": "london" } } ], "should": [ { "term": { "play_name": { "value": "Henry VI Part 1" } } }, { "term": { "play_name": { "value": "Henry VI Part 2" } } }, { "term": { "play_name": { "value": "Henry VI Part 3" } } } ], "minimum_should_match": 1 } } }
- Create a search query that meets the requirements of Query 2.
Use the Kibana console tool to execute the following:
GET shakespeare/_search { "from": 0, "size": 5, "highlight": { "pre_tags": ["<strong>"], "post_tags": ["</strong>"], "fields": { "text_entry": {} } }, "sort": [ { "_score": { "order": "desc" } }, { "line_id": { "order": "asc" } } ], "query": { "bool": { "must": [ { "match": { "text_entry": "death" } } ], "filter": { "term": { "play_name": "Hamlet" } } } } }