Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

Elasticsearch FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/elasticsearch-index-smooth-shift.html

Elasticsearch(es)索引零停机(无需重启)无缝平滑切换的方法

es(elasticsearch) 索引管理详解 es(elasticsearch) 索引管理详解


在 Elasticsearch(es)的实际使用中,我们往往需要每天对索引数据进行增量更新和全量更新,如果当前程序使用的索引需要用新建的(可能是全量更新的),那么可以通过索引别名 alias 的方式进行索引无缝平滑切换,无需修改程序代码,平滑操作你可以理解是原子性的操作,应用端无感知。

具体方法

假设我们每天全量数据同步到 es 的问答索引名为 qa_20200501,这种带有日期后缀的形式,调用索引查询的指定索引名是 qa 即可,当每天切换到最新数据的索引时,只需将现有的索引别名映射删除,将新的索引映射到别名下即可,示例如下:

POST /_aliases
{    
  "actions": [
    { "remove": { "index": "qa_20200501", "alias": "qa" }},
    { "add": { "index": "qa_20200502", "alias": "qa" }}
  ]
}

索引别名本质上是一个快捷方式或软链接,并且它是一个原子性的操作

此外,应用中使用别名而不是索引名,这样你就可以在任何时候重建索引。

上述示例中多个操作用了 _aliases,还有单个操作的 _alias

需要注意的是,如果别名与索引是一对一的,使用别名索引文档或者查询文档是可以的,但是如果别名和索引是一对多的,使用别名会发生错误,因为 es 不知道把文档写入哪个索引中去或者从哪个索引中读取文档。

elasticsearch 删除索引操作能够用单个命令来进行完成,有不同的操作形式,具体如下: ...
Elasticsearch 创建索引如同 MySQL 创建数据库,es 提供了 RESTFul API 来创建索引,可以通过 PUT 命令快 ...
Elasticsearch索引的配置项主要分为静态配置属性和动态配置属性,静态配置属性是索引创建后不能修改,而动态配置属性则可以随时修改。r ...
Elasticsearch索引管理主要包括如何进行索引的创建、索引的删除、副本的更新、索引读写权限、索引别名的配置等等内容。首先,创建索引m ...
在 es 使用中,开发者想配置自身业务中沉淀的同义词(synonyms)表,并基于该同义词库配置包含其的分析器(analyzer),主要分为 ...