Whether you need to change the mapping of an existing index or take a subset of data from one index and copy it to another, the `_reindex` API in Elasticsearch has you covered. With the `_reindex` API, you can take all or just a subset of data from one index and copy it to another. In this hands-on lab, you are given the opportunity to exercise the following:
* Reindex a subset of data from one index to a new index
* Create an ingest node pipeline
* Transform data during the reindexing process
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create the romeo_and_juliet index.
Use the Kibana console tool to execute the following:
PUT romeo_and_juliet { "mappings": { "properties": { "line_id": { "type": "integer" }, "line_number": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "play_name": { "type": "keyword" }, "speaker": { "type": "keyword" }, "speech_number": { "type": "integer" }, "text_entry": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "type": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } }, "settings": { "number_of_shards": 4, "number_of_replicas": 3 } }
- Create the shakespeare-tokenizer ingest node pipeline.
Use the Kibana console tool to execute the following:
PUT _ingest/pipeline/shakespeare-tokenizer { "description": "Tokenizes the text_entry field into an array. Adds a word_count field. Removes the play_name field.", "processors": [ { "split": { "field": "text_entry", "separator": "\s+", "target_field": "word_array" } }, { "script": { "lang": "painless", "source": "ctx.word_count = ctx.word_array.length" } }, { "remove": { "field": "play_name" } } ] }
- Reindex the play “Romeo and Juliet”.
Use the Kibana console tool to execute the following:
POST _reindex { "source": { "index": "shakespeare", "query": { "match": { "play_name": "Romeo and Juliet" } } }, "dest": { "index": "romeo_and_juliet", "pipeline": "shakespeare-tokenizer" } }