This example shows how to replace & and @ symbols before tokenizing text. It helps search understand these symbols as words.
Elasticsearch
{
"settings": {
"analysis": {
"char_filter": {
"replace_symbols": {
"type": "mapping",
"mappings": ["&=> and", "@=> at"]
}
},
"analyzer": {
"custom_analyzer": {
"type": "custom",
"char_filter": ["replace_symbols"],
"tokenizer": "standard"
}
}
}
}
}
# Example text to analyze: "Email me at user@example.com & stay safe!"# After character filter, text becomes: "Email me at user at example.com and stay safe!"# Tokens produced: ["Email", "me", "at", "user", "at", "example", "com", "and", "stay", "safe"]
OutputSuccess
Important Notes
Character filters only change the raw text before tokenizing.
They do not remove tokens but can change how tokens are created.
Use them to fix or clean text early in the analysis process.
Summary
Character filters modify text before tokenizing.
They help clean or replace unwanted characters.
Common types include mapping and pattern_replace.
Practice
(1/5)
1. What is the main purpose of a character_filter in Elasticsearch analyzers?
easy
A. To split text into tokens after analysis
B. To modify text before tokenizing by replacing or removing characters
C. To store documents in the index
D. To sort search results by relevance
Solution
Step 1: Understand character_filter role
Character filters act on raw text before tokenization to clean or replace characters.
Step 2: Differentiate from other components
Tokenizers split text into tokens, and other parts handle indexing or sorting, not character filters.
Final Answer:
To modify text before tokenizing by replacing or removing characters -> Option B
Quick Check:
Character filters = modify text pre-tokenizing [OK]
Hint: Character filters act before tokenizing text [OK]
Common Mistakes:
Confusing character filters with tokenizers
Thinking character filters sort or store data
Assuming character filters work after tokenizing
2. Which of the following is the correct syntax to define a mapping character filter in Elasticsearch?
easy
A. "char_filter": {"my_mapping": {"type": "mapping", "mappings": ["ph=>f", "qu=>kw"]}}
B. "char_filter": {"my_mapping": {"type": "pattern_replace", "pattern": "ph", "replacement": "f"}}
C. "char_filter": {"my_mapping": {"type": "mapping", "pattern": "ph", "replacement": "f"}}
D. "char_filter": {"my_mapping": {"type": "replace", "mappings": ["ph=>f"]}}
Solution
Step 1: Identify correct type and keys for mapping filter
The mapping filter uses "type": "mapping" and a "mappings" array with string replacements.
Step 2: Check syntax correctness
"char_filter": {"my_mapping": {"type": "mapping", "mappings": ["ph=>f", "qu=>kw"]}} correctly uses "type": "mapping" and "mappings" with array of strings like "ph=>f".
Final Answer:
"char_filter": {"my_mapping": {"type": "mapping", "mappings": ["ph=>f", "qu=>kw"]}} -> Option A
Quick Check:
Mapping filter syntax = type mapping + mappings array [OK]
Hint: Mapping filters use type 'mapping' and 'mappings' array [OK]
Common Mistakes:
Using pattern_replace keys for mapping filter
Wrong type name like 'replace' instead of 'mapping'
Using 'pattern' and 'replacement' keys in mapping filter
C. The replacement string 'ph=>f' is incorrect format
D. The key should be 'mappings' not 'mapping'
Solution
Step 1: Check correct key for mapping filter
The mapping filter requires the key 'mappings' (plural) for the array of replacements.
Step 2: Verify other parts
Type 'mapping' is valid, and the replacement string format "ph=>f" is correct.
Final Answer:
The key should be 'mappings' not 'mapping' -> Option D
Quick Check:
Key name must be 'mappings' for mapping filter [OK]
Hint: Use 'mappings' key (plural) for mapping filters [OK]
Common Mistakes:
Using 'mapping' instead of 'mappings'
Mistaking type name
Wrong replacement string format
5. You want to create a character filter that replaces all occurrences of 'cat' with 'dog' and removes digits from the text before tokenizing. Which configuration correctly combines these requirements?