ElasticSearch(6.8.6)-es重建索引


需求说明:在业务中遇到创建索引属性类型存在问题,导致查询异常,现在就是要更改现有索引属性类型,同时保留现有数据,因此了解到重建索引,并记录下来。

一、重建索引流程

文中所有请求都是使用postman

{{es_url}} 为postman全局配置:es服务地址:端口、如果有身份验证请加上用户密码

tips:本人非线上操作,删除需谨慎

ES查看版本

GET {{es_url}}

执行结果

{
    "name": "vDPYm0I",
    "cluster_name": "docker-cluster",
    "cluster_uuid": "ixK-WIooRoiecvXWOkLz5A",
    "version": {
        "number": "6.8.6",
        "build_flavor": "default",
        "build_type": "docker",
        "build_hash": "3d9f765",
        "build_date": "2019-12-13T17:11:52.013738Z",
        "build_snapshot": false,
        "lucene_version": "7.7.2",
        "minimum_wire_compatibility_version": "5.6.0",
        "minimum_index_compatibility_version": "5.0.0"
    },
    "tagline": "You Know, for Search"
}

1、老索引添加别名

首先,老索引添加别名,请求索引别名可以访问到老索引数据

POST {{es_url}}/_aliases
{
  "actions": [
    {
      "add": {
        "index": "old_index",
        "alias": "old_index_alias"
      }
    }
  ]
}

执行结果

{
    "acknowledged": true
}

2、创建新索引

然后创建新索引,new_index
索引字段属性在这一步骤重定义了

PUT {{es_url}}/new_index
{
    "mappings": {
        "_doc": {
            "properties": {
				
            }
        }
    }
}

执行结果

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "new_index"
}

3、copy老索引数据到新索引

将老索引数据拷贝到新索引中,本文中不探讨数据迁移时间等问题
迁移完之后可以看下数据是否一致

POST {{es_url}}/_reindex
{
	"source": {
		"index": "old_index"
	},
	"dest": {
		"index": "new_index"
	}
}

执行结果

{
    "took": 13,
    "timed_out": false,
    "total": 7,
    "updated": 0,
    "created": 7,
    "deleted": 0,
    "batches": 1,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
        "bulk": 0,
        "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1.0,
    "throttled_until_millis": 0,
    "failures": []
}

4、替换别名

新索引将别名指向第1步老索引建立的别名,同时删除老索引别名
执行完这个步骤之后就可以看到更改后的效果啦

POST {{es_url}}/_aliases
{
	"actions": [{
			"add": {
				"index": "new_index",
				"alias": "old_index_alias"
			}
		},
		{
			"remove": {
				"index": "old_index",
				"alias": "old_index_alias"
			}
		}
	]
}

执行结果

{
    "acknowledged": true
}

5、删除旧索引

执行这个步骤前需要先验证下是否正常

DELETE {{es_url}}/old_index

执行结果

{
    "acknowledged": true
}

二、扩展操作

如果想保留老索引的名称,可以在重建索引之后,再次执行一波操作,将新索引数据迁移到老索引,这样可以保留老索引名称不变,同时别名也可以移除

建立新索引,索引名称为老索引名称

走第2步流程创建老索引old_index

将现在的索引数据迁移到新建索引中

参照第3步流程
执行完这个步骤之后,使用新建的索引名为old_index进行验证数据是否正常
如果一切正常使用,此时可以将new_index索引移除
使用扩展操作的好处在于可以不改变使用的原索引名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值