Elasticsearch best practice: aliases
๐ Published: โข Thomas Queste
Elasticsearch aliases are a best practice. They simplify alot management of indices, for example, migration between indices.
TL;DR
- An alias is simply a secondary name for an index or a set of indices
- Switch underlying indices without changing application code
- Switches are atomic = no zero downtime
Tips
- Use the alias in application code (
my_index) and target indices version-based (my_index_v1,my_index_v2) or time-based (my_index_2024,my_index_2025) - List aliases, sorted by name:
GET _cat/aliases?v&s=alias - Actions done in a single calls to
POST _aliasesare atomic (all-performed at once)
Typical usage
Given your app only knows the alias (my_index),
Create a new index (my_index_v2) and reindex the old to the new index (my_index_v1 to my_index_v2).
Then switch the alias when and only if the operation succeeds.
No change in application code, no downtime.
POST _aliases
{
// Atomic operation (all at once)
"actions": [
{
"add": {
"index": "my_index_v2",
"alias": "my_index"
}
},
{
"remove": {
"index": "my_index_v1",
"alias": "my_index"
}
}
]
}