背景

项目中使用的老的索引,由于数据冗余,会想影响性能。因此需要重新建立索引,但是这样必然需要更新服务中的索引名称,然后重新启动服务,可能会对服务的使用者产生一定的影响。因此,调研了Elasticsearch的索引别名,来解决这个问题。

简介

索引别名就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,我们可以使用索引别名实现以下功能:

  • 在运行的集群中可以无缝的从一个索引切换到另一个索引
  • 给多个索引分组 (例如, last_three_months)
  • 给索引的一个子集创建视图

索引别名的使用

目前,有两种管理别名的方式,_alias 用于单个操作, _aliases 用于执行多个原子级操作

创建别名的步骤如下:

1、 首先我们创建一个索引my_index_v1

PUT /my_index_v1

2、然后设置索引别名 my_index 指向 my_index_v1

PUT /my_index_v1/_alias/my_index

现在,我们可以通过以下命令行检测my_index别名指向了哪一个索引

GET /*/_alias/my_index

也可以通过下面的命令行查询哪些别名指向了my_index_v1索引

GET /my_index_v1/_alias/*

现在,加入我们在时使用中发现了一些问题,需要优化my_index_v1索引,比如修改mapping,此时,我们必须重新索引数据,设置mapping。首先,我们还是和上面一样,新建了一个新的索引my_index_v2。

此时,我们就可以使用索引别名,将别名my_index指向my_index_v2,同时,我们还需要将my_index_v1的别名移除。这个操作需要原子化,这意味这我们需要使用_aliases操作,具体命令如下

POST /_aliases
{
"actions": [
{ "remove": { "index": "my_index_v1", "alias": "my_index" }},
{ "add": { "index": "my_index_v2", "alias": "my_index" }}
]
}

此时,我们的应用在没有重新启动的情况下,从旧的索引移到了新的索引,对用户来说是完全无感知的,非常友好。

Elasticsearch索引别名使用的更多相关文章

  1. Elasticsearch 索引别名与Template

    在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...

  2. Elasticsearch索引别名、Filtered索引别名、Template

    在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...

  3. ES 10 - Elasticsearch的索引别名和索引模板

    目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...

  4. Elasticsearch之索引模板index template与索引别名index alias

    为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...

  5. Elasticsearch 通关教程(三): 索引别名Aliases问题

    业务问题 业务需求是不断变化迭代的,也许我们之前写的某个业务逻辑在下个版本就变化了,我们可能需要修改原来的设计,例如数据库可能需要添加一个字段或删减一个字段,而在搜索中也会发生这件事,即使你认为现在的 ...

  6. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  7. elasticsearch 5.x 系列之七 基于索引别名的零停机升级服务

    一,写在前面的话,elasticsearch 建立索引时的Mapping 设置 建议你在设计索引的初期,就把索引的各个字段设计好,因为,elasticsearch 的各个字段,定义好类型后,就无法进行 ...

  8. elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解

    一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...

  9. Elasticsearch索引模板和别名

    创建模板(模板名和索引名一样都不能有大写) PUT http://222.108.x.x:9200/_template/templateds { "template": " ...

随机推荐

  1. 使用element-ui 组件动态合并table的行/列(第二次修改)

    这是第二次修改,在通过调用后台接口返回来的时候,发现了代码中的问题:现在将博客中错误的地方改过来,添加备注 文章需求:动态实现table表格中行/列的自动合并 使用框架及UI类库:Vue+Elemen ...

  2. 深入了解line-height(各种单位总结1.5/150%/1.5em)

    默认状态,浏览器使用1.0-1.2 line-height, 这是一个初始值.你可以定义line-height属性来覆盖初始值:p{line-height:140%} 你可以有5种方式来定义line- ...

  3. 一,Jetty启动

    一,Jetty安装 从官网download.eclipse.org/jetty/ 下载需要的版本,在指定目录解压即可,下面用$JETTY_HOME表示Jetty的解压目录,也就是安装目录.我用的版本是 ...

  4. hduoj-1301 Jungle Roads(最小生成树-克鲁斯卡尔和普里姆求解)

    普里姆求解: #include<cstdio> #include<cmath> #include<cstring> #include<iostream> ...

  5. 进程之间的通信AIDL

    远程端: package cn.itcast.aidl; //AIDL //首先建立AIDL文件,有点和接口类似,建立好AIDL文件后, //会在gen文件夹下自动生成用于远程通信的类 //文件的后缀 ...

  6. mongoose 数据库连接

    1安装mongoose npm install mongoose 安装成功 2.打开数据库 mongod --path E:\mongo 成功 创建一个db.js var mongoose = req ...

  7. concurrent=false/true的定时任务job策略介绍

    前言: 四种测试情况,cronExpression = 0/30 * * * * ? : 1,一个trigger,job设置的是每30s执行一次,实际需要75s:concurrent=false: 2 ...

  8. 命令行窗口编译执行java

    1:首先配置java环境变量 新建系统环境变量 名称:JAVA_HOME 内容:D:\Program Files\Java\jdk1.7.0_13    为你jdk所在的文件夹位置 修改path路径 ...

  9. Vue学习笔记【17】——配置本地数据库和数据接口API

    先解压安装 PHPStudy; 解压安装 Navicat 这个数据库可视化工具,并激活: 打开 Navicat 工具,新建空白数据库,名为 dtcmsdb4; 双击新建的数据库,连接上这个空白数据库, ...

  10. Java——main()方法

    3.1 main()方法 由于java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因为java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static ...