One of the most user-friendly features of Elasticsearch is dynamic mapping. Dynamic mapping is Elasticsearch’s mechanism for detecting fields and mapping them to an appropriate data type. Using index templates, we can lay out the structure of a series of indexes to adhere to specific requirements or override and control dynamic mapping behavior. With dynamic mapping, we can skip the process of explicitly defining every possible field and its data type and instead tell Elasticsearch how to detect the desired data types for us as they are discovered during indexing. As a result, dynamic mapping allows us to get up and running with our data very quickly. In this hands-on lab, you will complete the following tasks:
* Create an index template
* Define explicit field mappings
* Define dynamic field mappings
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create the customers index template.
Use the Kibana console tool to execute the following:
PUT _template/customers { "aliases": { "customers": {} }, "index_patterns": ["customers-*"], "mappings": { "dynamic_templates": [ { "long_to_integer": { "match_mapping_type": "long", "mapping": { "type": "integer" } } } ], "properties": { "year_to_date": { "type": "double" } } }, "settings": { "number_of_shards": 4, "number_of_replicas": 3 } }
- Create the partners index template.
Use the Kibana console tool to execute the following:
PUT _template/partners { "aliases": { "partners": {} }, "index_patterns": ["partners-*"], "mappings": { "dynamic_templates": [ { "string_to_keyword": { "match_mapping_type": "string", "mapping": { "type": "keyword" } } } ], "properties": { "address": { "type": "text" } } }, "settings": { "number_of_shards": 4, "number_of_replicas": 3 } }
- Create the leads index template.
Use the Kibana console tool to execute the following:
PUT _template/leads { "aliases": { "leads": {} }, "index_patterns": ["leads-*"], "mappings": { "dynamic_templates": [ { "string_to_keyword": { "match_mapping_type": "string", "match": "lead_*", "unmatch": "*_text", "mapping": { "type": "keyword" } } } ], "properties": { "address": { "type": "text" }, "estimate": { "type": "double" } } }, "settings": { "number_of_shards": 4, "number_of_replicas": 3 } }