📖 Scenario: You are working with a collection of books stored in Elasticsearch. Each book has a title and an author. You want to find books by searching for words in their titles.
🎯 Goal: Build an Elasticsearch match query to find books whose titles contain a specific word.
📋 What You'll Learn
Create an index called books with sample book documents
Set a search word in a variable called search_word
Write a match query to find books with titles matching search_word
Print the search query JSON
💡 Why This Matters
🌍 Real World
Searching text fields in Elasticsearch is common for websites and apps that show books, articles, or products.
💼 Career
Knowing how to write match queries helps you build search features and work with Elasticsearch in many developer and data roles.
Progress0 / 4 steps
1
Create the books index with sample data
Create a variable called books that holds a list of dictionaries. Each dictionary should represent a book with keys title and author. Use these exact entries: {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald"}, {"title": "Great Expectations", "author": "Charles Dickens"}, and {"title": "The Grapes of Wrath", "author": "John Steinbeck"}.
Elasticsearch
Hint
Use a list with three dictionaries exactly as shown.
2
Set the search word
Create a variable called search_word and set it to the string "Great".
Elasticsearch
Hint
Assign the string "Great" to the variable search_word.
3
Write the match query
Create a variable called match_query that holds a dictionary representing an Elasticsearch match query. The query should search the title field for the value in search_word. Use this exact structure: {"query": {"match": {"title": search_word}}}.
Elasticsearch
Hint
Use a nested dictionary with keys "query", "match", and "title".
4
Print the match query
Write a print statement to display the match_query variable.
Elasticsearch
Hint
Use print(match_query) to show the query.
Practice
(1/5)
1. What does the match query in Elasticsearch primarily do?
easy
A. Updates documents with new values
B. Finds documents with text similar to the search words
C. Deletes documents matching the query
D. Creates a new index for the documents
Solution
Step 1: Understand the purpose of match query
The match query is designed to find documents that contain text similar to the search words provided.
Step 2: Differentiate from other operations
Deleting, updating, or creating indexes are not functions of the match query; it only searches text.
Final Answer:
Finds documents with text similar to the search words -> Option B
Quick Check:
Match query = text search [OK]
Hint: Match query searches text similarity, not modify data [OK]
Common Mistakes:
Confusing match query with delete or update operations
Thinking match query creates indexes
Assuming match query returns exact matches only
2. Which of the following is the correct syntax for a basic match query in Elasticsearch?
easy
A. { "match": { "field": "search text" } }
B. { "match": "field": "search text" }
C. { "match": { "field" = "search text" } }
D. { "match": [ "field", "search text" ] }
Solution
Step 1: Review correct JSON structure for match query
The match query requires a JSON object with the field name as key and the search text as value inside another object.
Step 2: Identify syntax errors in options
{ "match": { "field": "search text" } } uses correct JSON with colon separators and nested object. Options A, B, and C have syntax errors like missing braces, wrong assignment, or array usage.
B. The query string must be an array, not a string
C. The operator value should be lowercase 'and', not uppercase 'AND'
D. The match query cannot have an operator option
Solution
Step 1: Check operator value case sensitivity
Elasticsearch expects the operator value to be lowercase 'and' or 'or'. Uppercase 'AND' is invalid.
Step 2: Validate other parts of the query
The field name 'content' is valid, query string can be a string, and match query supports operator option.
Final Answer:
The operator value should be lowercase 'and', not uppercase 'AND' -> Option C
Quick Check:
Operator values are lowercase [OK]
Hint: Operator values must be lowercase 'and' or 'or' [OK]
Common Mistakes:
Using uppercase 'AND' or 'OR' for operator
Assuming query must be an array
Thinking operator option is not allowed
5. You want to find documents where the description field contains either the word 'fast' or 'quick', but not necessarily both. Which match query is correct?