如何使用索引别名重建索引

来源:9-7 -reindex

lialzm

2018-06-12

官网说可以使用索引别名进行零停机重建索引

链接 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index-aliases.html#index-aliases

请问怎么理解文章中的这句话

 my_index 是一个指向当前真实索引的别名。真实索引包含一个版本号: my_index_v1 , my_index_v2 等等

意思是我在kibana看到的_index字段实际是别名吗?但是我用

GET /{index}/_alias

是无法获取到的

并且我也无法使用my_index这个别名

比如 我有一个log-2018.04.29需要重建索引

我的操作

  1. 创建一个新的索引log-2018.04.29_bak

  2. 执行_reindex

  3. 然后使用

curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
    "actions": [
        { "remove": { "index": "log-2018.04.29", "alias": "log-2018.04.29" }},
        { "add":    { "index": "log-2018.04.29_bak", "alias": "log-2018.04.29" }}
    ]
}
'

结果是报错了an index exists with the same name as the alias

写回答

1回答

rockybean

2018-06-12

alias 的名称和 index 名称是不能一样的,你这里都相同了,一般来讲会这样命名 alias。

log 是一个 alias 的名称,它指向 log-2018.04.29 log-2018.04.28 ...

你就把别名理解为一个软链,你可以随时更改它指向的实际索引。开发人员在实际写代码的时候都是使用这个别名的,对于它实际指向的索引,开发人员不需要知道。当你做运维迁移的时候,只需要把数据迁移到新的索引后,再修改 alias 指向新的索引就可以了,此时开发人员也不需要修改代码。这也就是所谓的零停机。


0
1
lialzm
非常感谢!
2018-06-18
共1条回复

Elastic Stack从入门到实践,动手搭建数据分析系统

有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!

1361 学习 · 397 问题

查看课程