ElasticSearch给索引起"别名"和其重要性
创建别名:
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-aliases.html
我们有时候并不能确保索引库中的Mapping创建后旧肯定不会修改某个字段的类型的。
而ES又不能修改字段的类型,只能先新建索引库然后再导入原有数据。
这时候如果由于索引库名是不能一样的,所以每次你改一下,以前的业务代码旧改一次查询的索引库?这样会非常麻烦!
此时我们可以在创建索引库时按照下面规则来创建。
-
创建索引库,并加上版本号作为索引库的名字。
如:article_v1
-
给索引库起别名。
如:给article_v1的起一个别名article
-
业务系统中使用别名article来查询数据。
此时,即便我们要修改mapping,那么我们完全可以先新建一个索引库v2版本,然后使用_reindex复制数据,然后再给v2版本起别名为article,就不需要修改业务代码中的索引库名。
案例:
REM 创建logs_v1索引
curl -X PUT "http://elastic:swq1996@localhost:9200/logs_v1"
{"acknowledged":true,"shards_acknowledged":true,"index":"logs_v1"}
REM 给logs_v1索引起一个别名为logs
curl -X PUT "http://elastic:swq1996@localhost:9200/logs_v1/_alias/logs"
{"acknowledged":true}
REM 查看当前所有索引库的别名信息
curl -X GET "http://elastic:swq1996@localhost:9200/_cat/aliases?v&pretty"
alias index filter routing.index routing.search
logs logs_v1 - - -
REM 再次创建哪一个log_v2的索引库
curl -X PUT "http://elastic:swq1996@localhost:9200/logs_v2"
{"acknowledged":true,"shards_acknowledged":true,"index":"logs_v2"}
REM 给logs_v2索引起一个一模一样的别名为logs
curl -X PUT "http://elastic:swq1996@localhost:9200/logs_v2/_alias/logs"
{"acknowledged":true}
REM 再次查看当前所有索引库的别名信息, 可以发现有两个一样别名的
curl -X GET "http://elastic:swq1996@localhost:9200/_cat/aliases?v&pretty"
alias index filter routing.index routing.search
**logs logs_v1 - - -
logs logs_v2 - - -**
REM 最后删除logs_v1的别名
**curl -X DELETE "http://elastic:swq1996@localhost:9200/logs_v1/_alias/logs"**
{"acknowledged":true}
本文来自博客园,作者:运维爱背锅,转载请注明原文链接:https://www.cnblogs.com/juelian/p/17560165.html
分类:
ElasticSearch数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步