参考
别名
别名是一组数据流或索引的辅助名称。大多数弹性搜索 API 都接受别名来代替数据流或索引名称。
您可以随时更改别名的数据流或索引。如果您在应用程序的 Elasticsearch 请求中使用别名,则可以重新索引数据,而无需停机或更改应用程序的代码。
别名类型
有两种类型的别名:
- 数据流别名指向一个或多个数据流。
- 索引别名指向一个或多个索引。
别名不能同时指向数据流和索引。也不能将数据流的后备索引添加到索引别名。
添加别名
要将现有数据流或索引添加到别名,请使用别名 API 的操作。如果别名不存在,则请求将创建它。add
POST _aliases
{
"actions": [
{
"add": {
"index": "logs-nginx.access-prod",
"alias": "logs"
}
}
]
}
API 和参数支持通配符 ()。与数据流和索引匹配的通配符模式将返回错误。indexindices*
POST _aliases
{
"actions": [
{
"add": {
"index": "logs-*",
"alias": "logs"
}
}
]
}
删除别名
要删除别名,请使用别名 remove API 的操作。
POST _aliases
{
"actions": [
{
"remove": {
"index": "logs-nginx.access-prod",
"alias": "logs"
}
}
]
}
多个操作
您可以使用别名 API 在单个原子操作中执行多个操作。
例如,别名指向单个数据流。以下请求将流交换为别名。在此交换期间,别名没有停机时间,并且永远不会同时指向logs和logs两个流。
POST _aliases
{
"actions": [
{
"remove": {
"index": "logs-nginx.access-prod",
"alias": "logs"
}
},
{
"add": {
"index": "logs-my_app-default",
"alias": "logs"
}
}
]
}
在创建索引时添加别名
您还可以使用组件或索引模板在创建索引或数据流别名时添加它们。
# Component template with index aliases
PUT _component_template/my-aliases
{
"template": {
"aliases": {
"my-alias": {}
}
}
}
# Index template with index aliases
PUT _index_template/my-index-template
{
"index_patterns": [
"my-index-*"
],
"composed_of": [
"my-aliases",
"my-mappings",
"my-settings"
],
"template": {
"aliases": {
"yet-another-alias": {}
}
}
}
您还可以在创建索引 API 请求中指定索引别名。
# PUT <my-index-{now/d}-000001>
PUT %3Cmy-index-%7Bnow%2Fd%7D-000001%3E
{
"aliases": {
"my-alias": {}
}
}
查看别名
要获取集群别名的列表,请使用不带参数的 get 别名 API。
GET _alias
在 之后指定别名以查看其数据流或索引。_alias
GET _alias/logs
写入索引编辑
可用于为别名指定写入索引或数据流。弹性搜索会将对别名的任何写入请求路由到此索引或数据流。is_write_index
POST _aliases
{
"actions": [
{
"add": {
"index": "logs-nginx.access-prod",
"alias": "logs"
}
},
{
"add": {
"index": "logs-my_app-default",
"alias": "logs",
"is_write_index": true
}
}
]
}
如果别名指向多个索引或数据流且未设置,则该别名将拒绝写入请求。如果索引别名指向一个索引且未设置,则该索引将自动充当写入索引。数据流别名不会自动设置写入数据流,即使别名指向一个数据流也是如此。is_write_indexis_write_index
路由
使用该选项将别名请求路由到特定分片。这使您可以利用分片缓存来加快搜索速度。数据流别名不支持路由选项。routing
POST _aliases
{
"actions": [
{
"add": {
"index": "my-index-2099.05.06-000001",
"alias": "my-alias",
"routing": "1"
}
}
]
}
使用 和 为索引和搜索指定不同的路由选择值。如果指定,这些选项将覆盖其各自操作的值。index_routingsearch_routingrouting
POST _aliases
{
"actions": [
{
"add": {
"index": "my-index-2099.05.06-000001",
"alias": "my-alias",
"search_routing": "1",
"index_routing": "2"
}
}
]
}