多语言展示
当前在线:1225今日阅读:39今日分享:10

Elasticsearch 九、别名alias

Elasticsearch中你不能添加新的分析器或修改已有字段。所以我们不得不修改的时候就创建一个新配置好的索引,然后将数据迁移到新的索引中。如果你的应用中使用的是索引的名称,你就需要更新你的应用。即使你觉得你的索引设计的已经很完美了,但是需求你懂的,我相信你一定也深有体会。所以最好的做法就是在你的应用中使用别名而不是索引。这样你就可以在任何时候重建索引。别名的开销很小,应当被广泛的使用。
方法/步骤
1

操作别名的两个方法:_alias:单个操作_aliases:多个操作,原子性的操作

2

创建别名curl -XPUT 'localhost:9200/dm_v1/_alias/dm'curl -XPOST 'http://localhost:9200/_aliases' -d '{    "actions" : [        { "add" : { "index" : "dm_v1", "alias" : "dm_alias" } }    ]}'

3

删除别名curl -XPOST 'http://localhost:9200/_aliases' -d '{    "actions" : [        { "remove" : { "index" : "dm_v1", "alias" : "dm_alias" } }    ]}'curl -XDELETE 'localhost:9200/dm_v1/_alias/dm_alias'

4

删除别名的同时添加别名到新的索引,该操作时原子性的,不用担心存在别名没有指向任何索引的瞬间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:curl -XPOST 'http://localhost:9200/_aliases' -d '{    "actions" : [        { "remove" : { "index" : "dm_v1", "alias" : "dm" } },        { "add" : { "index" : "dm_v2", "alias" : "dm" } }    ]}'

5

查询别名通过别名查询所指向的索引:curl -XGET 'localhost:9200/_alias/dm'curl -XGET 'localhost:9200/_alias/dm*'查询指向该索引下的所有别名:curl -XGET 'localhost:9200/dm_v2/_alias/*'

6

也可以通过head检测别名是否存在curl -XHEAD -i 'localhost:9200/_alias/dm'curl -XHEAD -i 'localhost:9200/_alias/dm*'curl -XHEAD -i 'localhost:9200/dm_v2/_alias/*'

7

别名应该算是搞定啦,后面就是数据的迁移啦。前面有一篇用hadoop操作ES的可以参考。使用scan scroll来批量读取,bulk API批量索引数据应该是一种高效的方法。后续可以再写一个详细的实现啦。That's all!

推荐信息