栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch 数据迁移方案

ElasticSearch 数据迁移方案

ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人不论赋有什么样的棋,他如果不知道自己有这种棋,并且不形成适合于自己棋的计划,那种棋对他便完全无用。——休漠)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ
ElasticSearch 常用api

ElasticSearch 版本说明

{
“name”: “node-3”,
“cluster_name”: “test-elasticsearch”,
“cluster_uuid”: “FM6vTooBTS6cSM9scMEU7g”,
“version”: {
“number”: “2.4.1”,
“build_hash”: “c67dc32e24162035d18d6fe1e952c4cbcbe79d16”,
“build_timestamp”: “2016-09-27T18:57:55Z”,
“build_snapshot”: false,
“lucene_version”: “5.5.2”
},
“tagline”: “You Know, for Search”
}

ElasticSearch 数据迁移方案 ElasticSearch 数据迁移方式

有以下三种方式可以更新索引结构映射和设置

更新索引结构设置
因为自定义字段的key是未知的,无法显示的设置在mappings中。所以可以在settings中设置默认的分词器和过滤器等配置

更新索引结构映射
因为非自定义字段的key是已知的,可以显示的设置在mappings中

索引重建
避免影响旧索引数据,方便回滚,可以通过此方式安全的迁移数据到新索引,业务再使用该新索引即可
es默认滚动批次requests_per_second为1000

更新索引结构设置的数据迁移

优点:不需要数据迁移,直接更新索引设置就可以完成更新
缺点:只能对未设置过的字段进行更新,一次性操作,风险高。如果设置后数据检索等出了问题,就不能回滚了

操作步骤

先查看目前的索引结构

请求示例:GET http://172.21.0.31:9900/business 然后通过ElasticSearch接口_close关闭索引

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-close.html#close-index-api-request请求示例:http://172.21.0.31:9900/business/_close 再通过PUT接口更新settings

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-update-settings.html请求示例:http://172.21.0.31:9900/business/_settings需要注意的是只能对未设置过的字段进行更新,当以上请求发出后,再次更新会抛错,提示无法更新 更新完成后,再通过接口启用该索引

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/indices-open-close.html请求示例:http://172.21.0.31:9900/business/_open 重新查看该索引结构,查看更新后的结构

请求示例:GET http://172.21.0.31:9900/business 更新索引映射的数据迁移

同以上步骤相同,只不过更新是mappings官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.11/indices-put-mapping.html 重建索引_reindex,通过ElasticSearch提供的api _reindex接口进行索引数据迁移

优点:不影响旧索引数据,使用新的索引结构,即便出问题,也能够快速回滚到旧索引上
缺点:因为要迁移数据,操作较为麻烦。如果不删除旧数据索引,会额外的占用磁盘空间。业务需要使用新索引,可能需要做代码兼容

操作步骤

先创建新的索引结构

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/indices-create-index.html请求示例 POST http://172.21.0.31:9900/business_bak 查看刚刚创建的新索引

请求示例GET http://172.21.0.31:9900/business_bak需要注意numeric_detection数字转换和date_detection日期转换 ,在es中numeric_detection默认是false,但date_detection默认是开启的,所以我们需要显示的关闭date_detection选项,避免后面因为数据格式不一致导致迁移失败官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-field-mapping.html#_customizing_detected_date_formats 查看新索引中的数据,因为是刚新建的索引,所以数据是空的

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/search-search.html请求示例:GET http://172.21.0.31:9900/business_bak/_search 使用_reindex接口将索引business的索引数据复制至business_bak

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/docs-reindex.html请求示例:POST http://172.21.0.31:9900/_reindex 再次查看新索引中的数据,已经和旧索引中的一摸一样了

当数据量比较大时,可以使用wait_for_completion=false,指定创建异步任务,请求成功后,es会返回一个任务编号,用于后续查看和取消

以测试数据举例请求示例:POST http://172.21.0.31:9900/_reindex?wait_for_completion=false通过接口查看该任务的状态请求示例:GET http://172.21.0.31:9900/_tasks/OfyS4qUGTW2OuA2BL5fYgQ:36133906 若数据复制任务发生异常等情况,可以使用_cancel取消

请求示例:POST http://172.21.0.31:9900/_tasks/OfyS4qUGTW2OuA2BL5fYgQ:36133906/_cancel再次查看,任务已经消失了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号