Bird
Raised Fist0
Elasticsearchquery~5 mins

Custom analyzers in Elasticsearch - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a custom analyzer in Elasticsearch?
A custom analyzer is a user-defined text processor that controls how text is broken down and transformed during indexing and searching. It combines tokenizer, filters, and character filters to tailor text analysis.
Click to reveal answer
beginner
Name the three main components of a custom analyzer.
The three main components are:
1. Character filters (modify text before tokenizing)
2. Tokenizer (splits text into tokens)
3. Token filters (modify tokens after tokenizing)
Click to reveal answer
intermediate
How do you define a custom analyzer in Elasticsearch settings?
You define it inside the index settings under the 'analysis' section, specifying the analyzer name and its components like tokenizer and filters. Example:
{"analysis": {"analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard", "filter": ["lowercase", "asciifolding"]}}}}
Click to reveal answer
beginner
Why use the 'asciifolding' filter in a custom analyzer?
The 'asciifolding' filter converts accented characters to their ASCII equivalents (e.g., 'é' to 'e'), helping match text regardless of accents.
Click to reveal answer
intermediate
What happens if you omit token filters in a custom analyzer?
If you omit token filters, the analyzer will only tokenize the text without modifying tokens further. This might miss opportunities to normalize or improve search matching.
Click to reveal answer
Which component of a custom analyzer splits text into words?
ATokenizer
BCharacter filter
CToken filter
DIndex filter
Where do you define a custom analyzer in Elasticsearch?
AIn the index settings under 'analysis'
BIn the document mapping
CIn the search query
DIn the cluster settings
What does the 'lowercase' token filter do?
ARemoves accents
BRemoves stop words
CSplits text into tokens
DConverts tokens to lowercase
Which filter would help match 'café' and 'cafe'?
Alowercase
Bstop
Casciifolding
Dsynonym
If you want to remove common words like 'the' or 'and', which filter should you use?
Aasciifolding filter
Bstop filter
Clowercase filter
Dkeyword marker filter
Explain how to create a custom analyzer in Elasticsearch and why you might want to use one.
Think about how text is processed before searching.
You got /3 concepts.
    Describe the role of token filters in a custom analyzer and give two examples.
    Filters help clean or change words for better matching.
    You got /2 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a custom analyzer in Elasticsearch?
      easy
      A. To control how text is broken down and processed before indexing
      B. To store documents in the database
      C. To create visualizations of search results
      D. To manage user access permissions

      Solution

      1. Step 1: Understand the role of analyzers

        Analyzers in Elasticsearch process text by breaking it into tokens and applying filters.
      2. Step 2: Identify the purpose of custom analyzers

        Custom analyzers let you define specific tokenizers and filters to control text processing.
      3. Final Answer:

        To control how text is broken down and processed before indexing -> Option A
      4. Quick Check:

        Custom analyzer = text processing control [OK]
      Hint: Custom analyzers shape text before search indexing [OK]
      Common Mistakes:
      • Confusing analyzers with data storage
      • Thinking analyzers create visualizations
      • Mixing analyzers with security settings
      2. Which of the following is the correct way to define a custom analyzer with a lowercase filter in Elasticsearch settings?
      easy
      A. "analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard", "filter": ["lowercase"]}}
      B. "analyzer": {"my_analyzer": {"type": "standard", "tokenizer": "lowercase", "filter": ["custom"]}}
      C. "analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "lowercase", "filter": ["standard"]}}
      D. "analyzer": {"my_analyzer": {"type": "filter", "tokenizer": "standard", "filter": ["lowercase"]}}

      Solution

      1. Step 1: Review custom analyzer syntax

        A custom analyzer requires "type": "custom", a tokenizer, and filters as an array.
      2. Step 2: Match correct tokenizer and filter

        "standard" tokenizer and "lowercase" filter are valid and correctly placed in "analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard", "filter": ["lowercase"]}}.
      3. Final Answer:

        "analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard", "filter": ["lowercase"]}} -> Option A
      4. Quick Check:

        Custom analyzer syntax = "analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard", "filter": ["lowercase"]}} [OK]
      Hint: Custom analyzer needs type, tokenizer, and filter array [OK]
      Common Mistakes:
      • Using wrong type like 'filter' instead of 'custom'
      • Swapping tokenizer and filter names
      • Missing array brackets for filters
      3. Given this custom analyzer configuration:
      {
        "settings": {
          "analysis": {
            "analyzer": {
              "my_analyzer": {
                "type": "custom",
                "tokenizer": "standard",
                "filter": ["lowercase", "stop"]
              }
            },
            "filter": {
              "stop": {
                "type": "stop",
                "stopwords": ["the", "is"]
              }
            }
          }
        }
      }

      What is the output tokens when analyzing the text "The cat is on the mat" with my_analyzer?
      medium
      A. ["The", "cat", "is", "on", "the", "mat"]
      B. ["cat", "is", "on", "mat"]
      C. ["the", "cat", "is", "on", "the", "mat"]
      D. ["cat", "on", "mat"]

      Solution

      1. Step 1: Apply lowercase filter

        All words become lowercase: "the", "cat", "is", "on", "the", "mat".
      2. Step 2: Apply stop filter with stopwords ["the", "is"]

        Remove "the" and "is" from tokens, leaving "cat", "on", "mat".
      3. Final Answer:

        ["cat", "on", "mat"] -> Option D
      4. Quick Check:

        Lowercase + stop filter removes 'the' and 'is' [OK]
      Hint: Lowercase then remove stopwords from tokens [OK]
      Common Mistakes:
      • Ignoring lowercase filter effect
      • Not removing stopwords correctly
      • Confusing original text with tokens
      4. Identify the error in this custom analyzer definition:
      {
        "analysis": {
          "analyzer": {
            "my_analyzer": {
              "type": "custom",
              "tokenizer": "standard",
              "filter": "lowercase"
            }
          }
        }
      }
      medium
      A. Missing stopwords definition
      B. The tokenizer name is invalid
      C. The filter should be an array, not a string
      D. The analyzer type should be "standard"

      Solution

      1. Step 1: Check filter syntax in custom analyzer

        Filters must be provided as an array, e.g., ["lowercase"], not a string.
      2. Step 2: Verify other parts

        Tokenizer "standard" and analyzer type "custom" are correct; stopwords are optional.
      3. Final Answer:

        The filter should be an array, not a string -> Option C
      4. Quick Check:

        Filter must be array syntax [OK]
      Hint: Filters always use array brackets [] in custom analyzers [OK]
      Common Mistakes:
      • Using string instead of array for filters
      • Changing tokenizer to invalid types
      • Assuming stopwords are mandatory
      5. You want to create a custom analyzer that removes English stopwords, lowercases text, and also applies a stemmer filter named english_stemmer. Which of the following is the correct way to define this analyzer in Elasticsearch settings?
      hard
      A. { "analysis": { "analyzer": { "custom_english": { "type": "standard", "tokenizer": "standard", "filter": ["lowercase", "stop", "english_stemmer"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } }
      B. { "analysis": { "analyzer": { "custom_english": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop", "english_stemmer"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } }
      C. { "analysis": { "analyzer": { "custom_english": { "type": "custom", "tokenizer": "standard", "filter": ["stop", "lowercase", "english_stemmer"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } }
      D. { "analysis": { "analyzer": { "custom_english": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "english_stemmer", "stop"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } }

      Solution

      1. Step 1: Confirm analyzer type and tokenizer

        The analyzer must be "custom" with "standard" tokenizer to apply filters correctly.
      2. Step 2: Check filter order and definitions

        Filters should be ["lowercase", "stop", "english_stemmer"] in that order to lowercase first, remove stopwords next, then stem.
      3. Step 3: Verify filter definitions

        Stop filter uses "_english_" stopwords, and stemmer filter is correctly defined with language "english".
      4. Final Answer:

        { "analysis": { "analyzer": { "custom_english": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop", "english_stemmer"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } } -> Option B
      5. Quick Check:

        Custom analyzer with correct filter order and definitions = { "analysis": { "analyzer": { "custom_english": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop", "english_stemmer"] } }, "filter": { "stop": { "type": "stop", "stopwords": "_english_" }, "english_stemmer": { "type": "stemmer", "language": "english" } } } } [OK]
      Hint: Filter order matters: lowercase, stop, then stemmer [OK]
      Common Mistakes:
      • Using wrong analyzer type like 'standard'
      • Incorrect filter order causing wrong results
      • Missing or wrong stopwords definition
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard