Defining Custom Analyzers, Multi-Fields, and Mappings in Elasticsearch 7.13

3 hours
  • 3 Learning Objectives

About this Hands-on Lab

Elasticsearch has a plethora of built-in analyzers, as well as the ability to automatically detect the data type for each of your fields. If you want to fine-tune how your fields are analyzed and mapped, then Elasticsearch has you covered. In this hands-on lab, you will create and use custom analyzers and multi-fields, and define both explicit and dynamic mappings in Elasticsearch.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create the strings_as_keywords Component Template

From the Kibana console, create the strings_as_keywords component template with the following requirements:

  • Dynamically maps string fields as the keyword datatype.
  • Only indexes the first 256 characters.
Create the social_media_analyzer Component Template

From the Kibana console, create the social_media_analyzer component template with the following requirements:

  • Creates a custom analyzer called social_media that uses the classic tokenizer.
  • Uses the lowercase filter and a custom english_stop filter. The english_stop filter should remove English stop words.
  • Uses a custom emoticons mapping character filter with the following mappings:
    • :) as happy
    • :D as laughing
    • :( as sad
    • :') as crying
    • :O as surprised
    • ;) as winking
Create the twitter_template Index Template

From the Kibana console, create the twitter_template index template with the following requirements:

  • Matches all indices that start with "twitter-".
  • Composed of the strings_as_keywords and social_media_analyzer component templates.
  • Maps the tweet field as an analyzed string field with the social_media analyzer.
  • Maps a tweet.keyword multi-field as type keyword and only indexes the first 280 characters.
  • Sets the number of shards to 1 and replicas to 0.

Additional Resources

Logging In to the Elastic Environment

  1. Open a new browser tab and navigate to the public IP address of the es1 node provided on the lab page (e.g., http://public_ip).
  2. Log in using the username elastic and password elastic_acg.

Lab Scenario

You work as a Search Engineer for an online marketing company. You've been tasked with collecting and ingesting Twitter data pertaining to a specific hashtag for sentiment analysis. Before you can ingest the Twitter data on your single-node development cluster, you first need to create the following index and component templates:

Component Template: strings_as_keywords

  • Dynamically maps string fields as the keyword datatype.
  • Only indexes the first 256 characters.

Component Template: social_media_analyzer

  • Creates a custom analyzer called social_media that uses the classic tokenizer.
  • Uses the lowercase filter and a custom english_stop filter. The english_stop filter should remove English stop words.
  • Uses a custom emoticons mapping character filter with the following mappings:
    • :) as happy
    • :D as laughing
    • :( as sad
    • :') as crying
    • :O as surprised
    • ;) as winking

Index Template: twitter_template

  • Matches all indices that start with "twitter-".
  • Composed of the strings_as_keywords and social_media_analyzer component templates.
  • Maps the tweet field as an analyzed string field with the social_media analyzer.
  • Maps a tweet.keyword multi-field as type keyword and only indexes the first 280 characters.
  • Sets the number of shards to 1 and replicas to 0.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?