2013-08-28 19:24:34 -04:00
|
|
|
[[indices-aliases]]
|
|
|
|
== Index Aliases
|
|
|
|
|
2017-04-17 21:43:47 -04:00
|
|
|
APIs in Elasticsearch accept an index name when working against a
|
2013-08-28 19:24:34 -04:00
|
|
|
specific index, and several indices when applicable. The index aliases
|
2017-07-05 05:13:46 -04:00
|
|
|
API allows aliasing an index with a name, with all APIs automatically
|
2013-08-28 19:24:34 -04:00
|
|
|
converting the alias name to the actual index name. An alias can also be
|
|
|
|
mapped to more than one index, and when specifying it, the alias will
|
2017-07-05 05:13:46 -04:00
|
|
|
automatically expand to the aliased indices. An alias can also be
|
2013-08-28 19:24:34 -04:00
|
|
|
associated with a filter that will automatically be applied when
|
2015-10-01 15:21:34 -04:00
|
|
|
searching, and routing values. An alias cannot have the same name as an index.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Here is a sample of associating the alias `alias1` with index `test1`:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "add" : { "index" : "test1", "alias" : "alias1" } }
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
2016-08-16 11:52:24 -04:00
|
|
|
// TEST[s/^/PUT test1\nPUT test2\n/]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2016-08-18 16:51:37 -04:00
|
|
|
And here is removing that same alias:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "remove" : { "index" : "test1", "alias" : "alias1" } }
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Renaming an alias is a simple `remove` then `add` operation within the
|
|
|
|
same API. This operation is atomic, no need to worry about a short
|
|
|
|
period of time where the alias does not point to an index:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "remove" : { "index" : "test1", "alias" : "alias1" } },
|
2016-08-16 09:24:18 -04:00
|
|
|
{ "add" : { "index" : "test2", "alias" : "alias1" } }
|
2013-08-28 19:24:34 -04:00
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2017-07-05 05:13:46 -04:00
|
|
|
Associating an alias with more than one index is simply several `add`
|
2013-08-28 19:24:34 -04:00
|
|
|
actions:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "add" : { "index" : "test1", "alias" : "alias1" } },
|
|
|
|
{ "add" : { "index" : "test2", "alias" : "alias1" } }
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test1\nPUT test2\n/]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2015-12-07 11:23:53 -05:00
|
|
|
Multiple indices can be specified for an action with the `indices` array syntax:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2015-12-07 11:23:53 -05:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "add" : { "indices" : ["test1", "test2"], "alias" : "alias1" } }
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2015-12-07 11:23:53 -05:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test1\nPUT test2\n/]
|
2015-12-07 11:23:53 -05:00
|
|
|
|
|
|
|
To specify multiple aliases in one action, the corresponding `aliases` array
|
|
|
|
syntax exists as well.
|
|
|
|
|
|
|
|
For the example above, a glob pattern can also be used to associate an alias to
|
2015-07-10 00:44:55 -04:00
|
|
|
more than one index that share a common name:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2015-07-10 00:44:55 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "add" : { "index" : "test*", "alias" : "all_test_indices" } }
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2015-07-10 00:44:55 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test1\nPUT test2\n/]
|
2015-07-10 00:44:55 -04:00
|
|
|
|
|
|
|
In this case, the alias is a point-in-time alias that will group all
|
|
|
|
current indices that match, it will not automatically update as new
|
|
|
|
indices that match this pattern are added/removed.
|
|
|
|
|
2013-08-28 19:24:34 -04:00
|
|
|
It is an error to index to an alias which points to more than one index.
|
|
|
|
|
2016-08-18 16:51:37 -04:00
|
|
|
It is also possible to swap an index with an alias in one operation:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
PUT test <1>
|
|
|
|
PUT test_2 <2>
|
|
|
|
POST /_aliases
|
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{ "add": { "index": "test_2", "alias": "test" } },
|
|
|
|
{ "remove_index": { "index": "test" } } <3>
|
|
|
|
]
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
<1> An index we've added by mistake
|
|
|
|
<2> The index we should have added
|
|
|
|
<3> `remove_index` is just like <<indices-delete-index>>
|
|
|
|
|
2013-08-28 19:24:34 -04:00
|
|
|
[float]
|
2013-09-25 12:17:40 -04:00
|
|
|
[[filtered]]
|
2013-08-28 19:24:34 -04:00
|
|
|
=== Filtered Aliases
|
|
|
|
|
|
|
|
Aliases with filters provide an easy way to create different "views" of
|
|
|
|
the same index. The filter can be defined using Query DSL and is applied
|
|
|
|
to all Search, Count, Delete By Query and More Like This operations with
|
2014-07-18 16:50:07 -04:00
|
|
|
this alias.
|
|
|
|
|
|
|
|
To create a filtered alias, first we need to ensure that the fields already
|
|
|
|
exist in the mapping:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
PUT /test1
|
|
|
|
{
|
2014-07-18 16:50:07 -04:00
|
|
|
"mappings": {
|
|
|
|
"type1": {
|
|
|
|
"properties": {
|
|
|
|
"user" : {
|
2016-03-18 12:01:27 -04:00
|
|
|
"type": "keyword"
|
2014-07-18 16:50:07 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
2014-07-18 16:50:07 -04:00
|
|
|
|
|
|
|
Now we can create an alias that uses a filter on field `user`:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
|
|
|
{
|
2013-08-28 19:24:34 -04:00
|
|
|
"actions" : [
|
|
|
|
{
|
|
|
|
"add" : {
|
|
|
|
"index" : "test1",
|
|
|
|
"alias" : "alias2",
|
|
|
|
"filter" : { "term" : { "user" : "kimchy" } }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[float]
|
2013-09-30 17:32:00 -04:00
|
|
|
[[aliases-routing]]
|
2013-08-28 19:24:34 -04:00
|
|
|
==== Routing
|
|
|
|
|
|
|
|
It is possible to associate routing values with aliases. This feature
|
|
|
|
can be used together with filtering aliases in order to avoid
|
|
|
|
unnecessary shard operations.
|
|
|
|
|
|
|
|
The following command creates a new alias `alias1` that points to index
|
|
|
|
`test`. After `alias1` is created, all operations with this alias are
|
|
|
|
automatically modified to use value `1` for routing:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{
|
|
|
|
"add" : {
|
|
|
|
"index" : "test",
|
|
|
|
"alias" : "alias1",
|
|
|
|
"routing" : "1"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test\n/]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
It's also possible to specify different routing values for searching
|
|
|
|
and indexing operations:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
POST /_aliases
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{
|
|
|
|
"add" : {
|
|
|
|
"index" : "test",
|
|
|
|
"alias" : "alias2",
|
|
|
|
"search_routing" : "1,2",
|
|
|
|
"index_routing" : "2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test\n/]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
As shown in the example above, search routing may contain several values
|
|
|
|
separated by comma. Index routing can contain only a single value.
|
|
|
|
|
2015-12-08 12:44:36 -05:00
|
|
|
If a search operation that uses routing alias also has a routing parameter, an
|
|
|
|
intersection of both search alias routing and routing specified in the
|
2013-08-28 19:24:34 -04:00
|
|
|
parameter is used. For example the following command will use "2" as a
|
|
|
|
routing value:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
GET /alias2/_search?q=user:kimchy&routing=2,3
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2018-06-15 11:45:29 -04:00
|
|
|
[float]
|
|
|
|
[[aliases-write-index]]
|
|
|
|
==== Write Index
|
|
|
|
|
|
|
|
It is possible to associate the index pointed to by an alias as the write index.
|
|
|
|
When specified, all index and update requests against an alias that point to multiple
|
|
|
|
indices will attempt to resolve to the one index that is the write index.
|
|
|
|
Only one index per alias can be assigned to be the write index at a time. If no write index is specified
|
|
|
|
and there are multiple indices referenced by an alias, then writes will not be allowed.
|
|
|
|
|
|
|
|
It is possible to specify an index associated with an alias as a write index using both the aliases API
|
|
|
|
and index creation API.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
POST /_aliases
|
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{
|
|
|
|
"add" : {
|
|
|
|
"index" : "test",
|
|
|
|
"alias" : "alias1",
|
|
|
|
"is_write_index" : true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test\n/]
|
|
|
|
|
|
|
|
In this example, we associate the alias `alias1` to both `test` and `test2`, where
|
|
|
|
`test` will be the index chosen for writing to.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
PUT /alias1/_doc/1
|
|
|
|
{
|
|
|
|
"foo": "bar"
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
|
|
|
|
|
|
|
The new document that was indexed to `/alias1/_doc/1` will be indexed as if it were
|
|
|
|
`/test/_doc/1`.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
GET /test/_doc/1
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
|
|
|
|
|
|
|
To swap which index is the write index for an alias, the Aliases API can be leveraged to
|
|
|
|
do an atomic swap. The swap is not dependent on the ordering of the actions.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
POST /_aliases
|
|
|
|
{
|
|
|
|
"actions" : [
|
|
|
|
{
|
|
|
|
"add" : {
|
|
|
|
"index" : "test",
|
|
|
|
"alias" : "alias1",
|
|
|
|
"is_write_index" : true
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
"add" : {
|
|
|
|
"index" : "test2",
|
|
|
|
"alias" : "alias1",
|
|
|
|
"is_write_index" : false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT test\nPUT test2\n/]
|
|
|
|
|
|
|
|
[IMPORTANT]
|
|
|
|
=====================================
|
|
|
|
Aliases that do not explicitly set `is_write_index: true` for an index, and
|
|
|
|
only reference one index, will have that referenced index behave as if it is the write index
|
|
|
|
until an additional index is referenced. At that point, there will be no write index and
|
|
|
|
writes will be rejected.
|
|
|
|
=====================================
|
2015-12-08 12:44:36 -05:00
|
|
|
|
2013-08-28 19:24:34 -04:00
|
|
|
[float]
|
2013-09-30 17:32:00 -04:00
|
|
|
[[alias-adding]]
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
=== Add a single alias
|
2013-08-28 19:24:34 -04:00
|
|
|
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
An alias can also be added with the endpoint
|
|
|
|
|
|
|
|
`PUT /{index}/_alias/{name}`
|
|
|
|
|
|
|
|
|
|
|
|
where
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[horizontal]
|
Aliases: Throw exception if index is null or missing when creating an alias
Fixes a bug where alias creation would allow `null` for index name, which thereby
applied the alias to _all_ indices. This patch makes the validator throw an
exception if the index is null.
```bash
POST /_aliases
{
"actions": [
{
"add": {
"alias": "empty-alias",
"index": null
}
}
]
}
```
```json
{
"error": "ActionRequestValidationException[Validation Failed: 1: Alias action [add]: [index] may not be null;]",
"status": 400
}
```
The reason this bug wasn't caught by the existing tests is because
the old test for nullness only validated against a cluster which had
zero indices. The null index is translated into "_all", and since
there are no indices, this fails because the index doesn't exist.
So the test passes.
However, as soon as you add an index, "_all" resolves and you get the
situation described in the original bug report: null index is
accepted by the alias, resolves to "_all" and gets applied to everything.
The REST tests, otoh, explicitly tested this bug as a real feature and therefore
passed. The REST tests were modified to change this behavior.
Fixes #7863
2014-10-27 14:36:28 -04:00
|
|
|
`index`:: The index the alias refers to. Can be any of `* | _all | glob pattern | name1, name2, …`
|
2014-03-07 08:21:45 -05:00
|
|
|
`name`:: The name of the alias. This is a required option.
|
|
|
|
`routing`:: An optional routing that can be associated with an alias.
|
2013-08-28 19:24:34 -04:00
|
|
|
`filter`:: An optional filter that can be associated with an alias.
|
|
|
|
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
You can also use the plural `_aliases`.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[float]
|
|
|
|
==== Examples:
|
|
|
|
|
2014-07-18 16:50:07 -04:00
|
|
|
Adding time based alias::
|
|
|
|
+
|
|
|
|
--
|
2013-08-28 19:24:34 -04:00
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
PUT /logs_201305/_alias/2013
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT logs_201305\n/]
|
2014-07-18 16:50:07 -04:00
|
|
|
--
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-07-18 16:50:07 -04:00
|
|
|
Adding a user alias::
|
|
|
|
+
|
|
|
|
--
|
|
|
|
First create the index and add a mapping for the `user_id` field:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
PUT /users
|
|
|
|
{
|
2014-07-18 16:50:07 -04:00
|
|
|
"mappings" : {
|
|
|
|
"user" : {
|
|
|
|
"properties" : {
|
|
|
|
"user_id" : {"type" : "integer"}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2014-07-18 16:50:07 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
2014-07-18 16:50:07 -04:00
|
|
|
|
|
|
|
Then add the alias for a specific user:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
PUT /users/_alias/user_12
|
|
|
|
{
|
2014-01-28 04:47:40 -05:00
|
|
|
"routing" : "12",
|
2013-08-28 19:24:34 -04:00
|
|
|
"filter" : {
|
|
|
|
"term" : {
|
|
|
|
"user_id" : 12
|
|
|
|
}
|
2014-03-07 08:21:45 -05:00
|
|
|
}
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-07-18 16:50:07 -04:00
|
|
|
--
|
|
|
|
|
2014-01-28 04:47:40 -05:00
|
|
|
[float]
|
|
|
|
[[alias-index-creation]]
|
|
|
|
=== Aliases during index creation
|
|
|
|
|
|
|
|
Aliases can also be specified during <<create-index-aliases,index creation>>:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
PUT /logs_20162801
|
|
|
|
{
|
2014-07-18 16:50:07 -04:00
|
|
|
"mappings" : {
|
|
|
|
"type" : {
|
|
|
|
"properties" : {
|
|
|
|
"year" : {"type" : "integer"}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2014-01-28 04:47:40 -05:00
|
|
|
"aliases" : {
|
|
|
|
"current_day" : {},
|
2016-05-12 14:25:13 -04:00
|
|
|
"2016" : {
|
2014-01-28 04:47:40 -05:00
|
|
|
"filter" : {
|
2016-05-12 14:25:13 -04:00
|
|
|
"term" : {"year" : 2016 }
|
2014-01-28 04:47:40 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-05-12 14:25:13 -04:00
|
|
|
}
|
2014-01-28 04:47:40 -05:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
2014-01-28 04:47:40 -05:00
|
|
|
|
2013-08-28 19:24:34 -04:00
|
|
|
[float]
|
2013-09-25 12:17:40 -04:00
|
|
|
[[deleting]]
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
=== Delete aliases
|
|
|
|
|
|
|
|
|
|
|
|
The rest endpoint is: `/{index}/_alias/{name}`
|
2013-08-28 19:24:34 -04:00
|
|
|
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
where
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[horizontal]
|
2014-03-07 08:21:45 -05:00
|
|
|
`index`:: `* | _all | glob pattern | name1, name2, …`
|
|
|
|
`name`:: `* | _all | glob pattern | name1, name2, …`
|
2013-08-28 19:24:34 -04:00
|
|
|
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
Alternatively you can use the plural `_aliases`. Example:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
DELETE /logs_20162801/_alias/current_day
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[float]
|
2013-09-30 17:32:00 -04:00
|
|
|
[[alias-retrieving]]
|
2013-08-28 19:24:34 -04:00
|
|
|
=== Retrieving existing aliases
|
|
|
|
|
2017-04-17 21:43:47 -04:00
|
|
|
The get index alias API allows to filter by
|
2013-08-28 19:24:34 -04:00
|
|
|
alias name and index name. This api redirects to the master and fetches
|
|
|
|
the requested index aliases, if available. This api only serialises the
|
|
|
|
found index aliases.
|
|
|
|
|
2014-03-07 08:21:45 -05:00
|
|
|
Possible options:
|
2013-08-28 19:24:34 -04:00
|
|
|
[horizontal]
|
2014-03-07 08:21:45 -05:00
|
|
|
`index`::
|
2017-05-24 10:17:05 -04:00
|
|
|
The index name to get aliases for. Partial names are
|
2013-08-28 19:24:34 -04:00
|
|
|
supported via wildcards, also multiple index names can be specified
|
2014-03-07 08:21:45 -05:00
|
|
|
separated with a comma. Also the alias name for an index can be used.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2014-03-07 08:21:45 -05:00
|
|
|
`alias`::
|
2013-08-28 19:24:34 -04:00
|
|
|
The name of alias to return in the response. Like the index
|
|
|
|
option, this option supports wildcards and the option the specify
|
2014-01-02 07:55:53 -05:00
|
|
|
multiple alias names separated by a comma.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2013-12-11 18:30:12 -05:00
|
|
|
`ignore_unavailable`::
|
2016-01-11 03:50:26 -05:00
|
|
|
What to do if an specified index name doesn't
|
2013-12-11 18:30:12 -05:00
|
|
|
exist. If set to `true` then those indices are ignored.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
The rest endpoint is: `/{index}/_alias/{alias}`.
|
|
|
|
|
|
|
|
[float]
|
|
|
|
==== Examples:
|
|
|
|
|
|
|
|
All aliases for the index users:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
GET /logs_20162801/_alias/*
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Response:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
{
|
|
|
|
"logs_20162801" : {
|
|
|
|
"aliases" : {
|
|
|
|
"2016" : {
|
|
|
|
"filter" : {
|
|
|
|
"term" : {
|
|
|
|
"year" : 2016
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-05-12 21:44:08 -04:00
|
|
|
// TESTRESPONSE
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2016-05-12 14:25:13 -04:00
|
|
|
All aliases with the name 2016 in any index:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
GET /_alias/2016
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Response:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
2016-05-12 14:25:13 -04:00
|
|
|
"logs_20162801" : {
|
2013-08-28 19:24:34 -04:00
|
|
|
"aliases" : {
|
2016-05-12 14:25:13 -04:00
|
|
|
"2016" : {
|
|
|
|
"filter" : {
|
|
|
|
"term" : {
|
|
|
|
"year" : 2016
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-05-12 21:44:08 -04:00
|
|
|
// TESTRESPONSE
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2016-05-12 14:25:13 -04:00
|
|
|
All aliases that start with 20 in any index:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
GET /_alias/20*
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
Response:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
{
|
2016-05-12 14:25:13 -04:00
|
|
|
"logs_20162801" : {
|
2013-08-28 19:24:34 -04:00
|
|
|
"aliases" : {
|
2016-05-12 14:25:13 -04:00
|
|
|
"2016" : {
|
|
|
|
"filter" : {
|
|
|
|
"term" : {
|
|
|
|
"year" : 2016
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
2016-05-12 21:44:08 -04:00
|
|
|
// TESTRESPONSE
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
There is also a HEAD variant of the get indices aliases api to check if
|
|
|
|
index aliases exist. The indices aliases exists api supports the same
|
|
|
|
option as the get indices aliases api. Examples:
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
HEAD /_alias/2016
|
|
|
|
HEAD /_alias/20*
|
|
|
|
HEAD /logs_20162801/_alias/*
|
2013-08-28 19:24:34 -04:00
|
|
|
--------------------------------------------------
|
2016-05-12 14:25:13 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|