Alias,顾名思义,就是Index的别名。
一个Alias可以指向多个Index,一个Index也可以关联多个Alias,具体可以通过Alias的REST API来设定。在查询数据时,Elasticsearch会自动检测请求的Path是否是Alias,是的话就会从其关联的Index中查询数据。
Alias的巧妙之处在于,能帮助我们将查询请求无缝的从一个Index切换到另一个Index上面,这种切换对于客户端是透明的。
另外,最好的做法就是在你的应用中使用别名而不是索引。这样你就可以在任何时候重建索引。别名的开销很小,应当被广泛的使用。
合理使用别名 -- 是Elasticsearch的最佳实践之一。
一、创建别名
下面为 book 索引创建一个别名 book_library,这样我们对 book_library 的操作就像对索引 book的操作一样。
POST localhost:9200/_aliases
{
"actions": [
{
"add": {
"index": "book",
"alias": "book_library"
}
}
]
}
设置完成后,GET localhost:9200/book 查询别名。
别名不仅仅可以关联一个索引,它能聚合多个索引。
我们为索引book 和 book2 创建一个别名book_alias,这样对book_alias的操作(仅限读操作),会操作book和book2,类似于聚合了book 和book2。我们是不能对my_index_alias进行写操作,当有多个索引对应一个别名alias,不能区分到底操作哪一个。
{
"actions": [
{
"add": {
"index": "book",
"alias": "book_alias"
}
},
{
"add": {
"index": "book2",
"alias": "book_alias"
}
}
]
}
别名添加完成之后,通过Elasticsearch Head插件,可以直观看到新添加的别名。
GET localhost:9200/book_alias/_search
可以查询到2个索引文件中的全部记录。
二、删除别名
curl -XPOST 'http://localhost:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "book", "alias" : "book_library" } }
]
}'
删除别名的同时添加别名到新的索引,该操作时原子性的,不用担心存在别名没有指向任何索引的瞬间。
curl -XPOST 'http://localhost:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "book", "alias" : "book_alias" } },
{ "add" : { "index" : "book2", "alias" : "book_alias" } }
]
}'
三、查询别名
通过别名查询所指向的索引:
GET http://localhost:9200/_alias/book_alias
查询指向该索引下的所有别名:
GET http://localhost:9200/book/_alias
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/644/viewspace-3143263/ ,如需转载,请注明出处,否则将追究法律责任。