参考

aliases

别名

别名是一组数据流或索引的辅助名称。大多数弹性搜索 API 都接受别名来代替数据流或索引名称。
您可以随时更改别名的数据流或索引。如果您在应用程序的 Elasticsearch 请求中使用别名,则可以重新索引数据,而无需停机或更改应用程序的代码。

别名类型

有两种类型的别名:

  • 数据流别名指向一个或多个数据流。
  • 索引别名指向一个或多个索引。

别名不能同时指向数据流和索引。也不能将数据流的后备索引添加到索引别名。

添加别名

要将现有数据流或索引添加到别名,请使用别名 API 的操作。如果别名不存在,则请求将创建它。add

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "add": {
  6. "index": "logs-nginx.access-prod",
  7. "alias": "logs"
  8. }
  9. }
  10. ]
  11. }

API 和参数支持通配符 ()。与数据流和索引匹配的通配符模式将返回错误。indexindices*

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "add": {
  6. "index": "logs-*",
  7. "alias": "logs"
  8. }
  9. }
  10. ]
  11. }

删除别名

要删除别名,请使用别名 remove API 的操作。

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "remove": {
  6. "index": "logs-nginx.access-prod",
  7. "alias": "logs"
  8. }
  9. }
  10. ]
  11. }

多个操作

您可以使用别名 API 在单个原子操作中执行多个操作。
例如,别名指向单个数据流。以下请求将流交换为别名。在此交换期间,别名没有停机时间,并且永远不会同时指向logs和logs两个流。

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "remove": {
  6. "index": "logs-nginx.access-prod",
  7. "alias": "logs"
  8. }
  9. },
  10. {
  11. "add": {
  12. "index": "logs-my_app-default",
  13. "alias": "logs"
  14. }
  15. }
  16. ]
  17. }

在创建索引时添加别名

您还可以使用组件索引模板在创建索引或数据流别名时添加它们。

  1. # Component template with index aliases
  2. PUT _component_template/my-aliases
  3. {
  4. "template": {
  5. "aliases": {
  6. "my-alias": {}
  7. }
  8. }
  9. }
  10. # Index template with index aliases
  11. PUT _index_template/my-index-template
  12. {
  13. "index_patterns": [
  14. "my-index-*"
  15. ],
  16. "composed_of": [
  17. "my-aliases",
  18. "my-mappings",
  19. "my-settings"
  20. ],
  21. "template": {
  22. "aliases": {
  23. "yet-another-alias": {}
  24. }
  25. }
  26. }

您还可以在创建索引 API 请求中指定索引别名。

  1. # PUT <my-index-{now/d}-000001>
  2. PUT %3Cmy-index-%7Bnow%2Fd%7D-000001%3E
  3. {
  4. "aliases": {
  5. "my-alias": {}
  6. }
  7. }

查看别名

要获取集群别名的列表,请使用不带参数的 get 别名 API

  1. GET _alias

在 之后指定别名以查看其数据流或索引。_alias

  1. GET _alias/logs

写入索引编辑

可用于为别名指定写入索引或数据流。弹性搜索会将对别名的任何写入请求路由到此索引或数据流。is_write_index

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "add": {
  6. "index": "logs-nginx.access-prod",
  7. "alias": "logs"
  8. }
  9. },
  10. {
  11. "add": {
  12. "index": "logs-my_app-default",
  13. "alias": "logs",
  14. "is_write_index": true
  15. }
  16. }
  17. ]
  18. }

如果别名指向多个索引或数据流且未设置,则该别名将拒绝写入请求。如果索引别名指向一个索引且未设置,则该索引将自动充当写入索引。数据流别名不会自动设置写入数据流,即使别名指向一个数据流也是如此。is_write_indexis_write_index

路由

使用该选项将别名请求路由到特定分片。这使您可以利用分片缓存来加快搜索速度。数据流别名不支持路由选项。routing

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "add": {
  6. "index": "my-index-2099.05.06-000001",
  7. "alias": "my-alias",
  8. "routing": "1"
  9. }
  10. }
  11. ]
  12. }

使用 和 为索引和搜索指定不同的路由选择值。如果指定,这些选项将覆盖其各自操作的值。index_routingsearch_routingrouting

  1. POST _aliases
  2. {
  3. "actions": [
  4. {
  5. "add": {
  6. "index": "my-index-2099.05.06-000001",
  7. "alias": "my-alias",
  8. "search_routing": "1",
  9. "index_routing": "2"
  10. }
  11. }
  12. ]
  13. }