Elasticsearch之重建索引

348 阅读1分钟

前言

重建索引适用于现有索引需要增加一个字段或修改已有字段类型,挺简单的,直接放码

1. 更新index template

首先更新index template,这样新建立的索引才会有新的/修改过的字段 PUT /_template/xxx

2. 建立新索引

PUT /xxx

3. 移除新索引的别名(可选)

如果没有使用别名的话,这一步可以略过,但是强烈推荐使用它,比如现在这种场景,在新的索引重建完成前,旧索引仍然能够提供服务(代码中使用别名而非具体的索引名来操作)

    POST /_aliases
{
    "actions": [
        { "remove": { "index": "new", "alias": "xxx" }},
    ]}

4. 重建索引

请注意,重建索引比较消耗资源,如果数据量很大,会花费很长时间

POST _reindex
{
  "source": {
    "index": "old"
  },
  "dest": {
    "index": "new"
  }}

5. 转移别名(可选)

移除旧索引的别名并在新索引上添加别名,基本可以实现业务上无感知

POST /_aliases
{
    "actions": [
        { "remove": { "index": "old", "alias": "xxx" }},
        { "add":    { "index": "new", "alias": "xxx" }}
    ]}