An analyzer breaks text into smaller pieces to help search engines understand it better. Tokenizers split text into words, and filters change or clean those words.
Analyzer components (tokenizer, filters) in Elasticsearch
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "stop"]
}
},
"filter": {
"stop": {
"type": "stop",
"stopwords": ["the", "and"]
}
}
}
}
}The tokenizer splits text into tokens (words).
The filter array applies changes to tokens, like making them lowercase or removing stop words.
{
"tokenizer": "whitespace",
"filter": ["lowercase"]
}{
"tokenizer": "standard",
"filter": ["lowercase", "stop"]
}{
"tokenizer": "keyword",
"filter": ["lowercase"]
}This example creates an index with a custom analyzer that splits text into words, makes them lowercase, and removes 'the' and 'and'. Then it analyzes a sentence to show the tokens.
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "stop"]
}
},
"filter": {
"stop": {
"type": "stop",
"stopwords": ["the", "and"]
}
}
}
}
}
GET /my_index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "The quick brown fox jumps over the lazy dog and runs away"
}Tokenizers break text into tokens, usually words or terms.
Filters can remove, change, or add tokens after tokenizing.
Stop filters remove common words that don't add meaning to searches.
Analyzers use tokenizers and filters to prepare text for searching.
Tokenizers split text into smaller pieces called tokens.
Filters modify tokens to improve search quality, like lowercasing or removing stop words.
Practice
tokenizer in an Elasticsearch analyzer?Solution
Step 1: Understand the tokenizer's function
A tokenizer breaks the input text into smaller parts called tokens, which are the basic units for searching.Step 2: Differentiate tokenizer from filters
Filters modify tokens after tokenization, such as lowercasing or removing stop words, but tokenizers do the initial splitting.Final Answer:
To split text into smaller pieces called tokens -> Option BQuick Check:
Tokenizer = splits text [OK]
- Confusing tokenizer with filters like lowercase or stop word removal
- Thinking tokenizer indexes tokens
- Assuming tokenizer modifies tokens after splitting
Solution
Step 1: Recall Elasticsearch tokenizer syntax
Tokenizers are defined as objects with atypefield specifying the tokenizer type.Step 2: Compare options
"tokenizer": { "type": "standard" } correctly uses an object withtypekey, while others use incorrect formats like strings or arrays.Final Answer:
"tokenizer": { "type": "standard" } -> Option CQuick Check:
Tokenizer syntax uses type key in object [OK]
- Using string directly instead of object with type
- Using array syntax for tokenizer
- Using incorrect key names like name instead of type
{
"tokenizer": "whitespace",
"filter": ["lowercase", "stop"]
}What will be the output tokens for the input text:
"The Quick Brown Fox"?Solution
Step 1: Apply the whitespace tokenizer
The whitespace tokenizer splits text by spaces, so tokens are ["The", "Quick", "Brown", "Fox"].Step 2: Apply lowercase and stop filters
The lowercase filter converts all tokens to lowercase: ["the", "quick", "brown", "fox"]. The stop filter removes common stop words like "the", leaving ["quick", "brown", "fox"].Final Answer:
["quick", "brown", "fox"] -> Option AQuick Check:
Lowercase + stop filter removes "the" [OK]
- Ignoring stop word removal
- Not applying lowercase filter before stop filter
- Assuming tokenizer changes case
{
"filter": [
{ "type": "lowercase" },
{ "type": "stop", "stopwords": "_english_" },
{ "type": "unknown_filter" }
]
}Solution
Step 1: Review each filter type
Lowercase and stop filters are valid and correctly defined. The stop filter uses a valid stopwords parameter.Step 2: Identify invalid filter
The filter with type "unknown_filter" is not a valid Elasticsearch filter type and will cause an error.Final Answer:
The filter list contains an invalid filter type -> Option DQuick Check:
Invalid filter type causes error [OK]
- Assuming all filter types are valid
- Thinking lowercase filter must be string
- Ignoring unknown filter errors
Solution
Step 1: Confirm tokenizer type
The tokenizer must be whitespace type, correctly defined as an object with type "whitespace".Step 2: Confirm filter order and definition
Filters should lowercase first, then remove stop words. { "tokenizer": { "type": "whitespace" }, "filter": ["lowercase", { "type": "stop", "stopwords": "_english_" }] } correctly defines lowercase as string and stop filter with explicit stopwords parameter.Step 3: Check other options
{ "tokenizer": "whitespace", "filter": ["lowercase", "stop"] } uses tokenizer as string which is allowed but less explicit; { "tokenizer": "standard", "filter": ["lowercase", "stop"] } uses standard tokenizer which is incorrect; { "tokenizer": { "type": "whitespace" }, "filter": ["stop", "lowercase"] } reverses filter order which may affect results.Final Answer:
{ "tokenizer": { "type": "whitespace" }, "filter": ["lowercase", { "type": "stop", "stopwords": "_english_" }] } -> Option AQuick Check:
Explicit tokenizer and correct filter order [OK]
- Using wrong tokenizer type
- Reversing filter order
- Not specifying stopwords explicitly
Ready to prove it?
Pass the test and this pattern moves unknown
