Change the type of an existing field in elasticsearch Create a new index with the desired mapping: Reindex your data from the old index to the new index Verify that the data has been reindexed correctly, and the new mapping is in place. (Optional) If you want to use the old index name, you can delete the old index and create an alias with the old index name pointing to the new index:

In Elasticsearch, you cannot directly change the mapping of an existing field. Instead, you’ll need to create a new index with the desired mapping and reindex your data from the old index to the new one.

Here’s a step-by-step process:

  1. Create a new index with the desired mapping:
PUT /new-index-name
{
  "mappings": {
    "properties": {
      "your_field": {
        "type": "new_field_type"
      }
    }
  }
}

Replace new-index-name with the name of the new index, your_field with the field name you want to change, and new_field_type with the new data type you want to use.

  1. Reindex your data from the old index to the new index:
POST /_reindex
{
  "source": {
    "index": "old-index-name"
  },
  "dest": {
    "index": "new-index-name"
  }
}

Replace old-index-name with the name of the current index and new-index-name with the name of the new index you just created.

  1. Verify that the data has been reindexed correctly, and the new mapping is in place.
  2. (Optional) If you want to use the old index name, you can delete the old index and create an alias with the old index name pointing to the new index:
DELETE /old-index-name

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "new-index-name",
        "alias": "old-index-name"
      }
    }
  ]
}

This will delete the old index and create an alias named old-index-name pointing to the new-index-name. This way, any queries or operations that previously used the old index name will now use the new index.

Note: Be cautious when deleting indices or manipulating data, as these actions can be difficult to reverse. Always create a backup or snapshot of your data before making significant changes.

Change the type of an existing field in elasticsearch