本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)

随着业务量的增加,本地的ES集群服务器性能和磁盘空间有点不够使用,项目组考虑使用腾讯云服务器,以下是我测试的使用_reindex方式迁移ES数据的具体步骤。

1.在腾讯云的ES上建立新索引

可根据业务需求,自行删减mappings无用的字段,更改字段类型和settings的设置,重新设置新索引。

PUT /test1
{
"mappings" : {
"properties" : {
"num" : {
"type" : "text",
"analyzer": "my_analyzer"
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
},
"analyzer": "my_analyzer"
},
"englishName" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
},
"analyzer": "my_analyzer"
},
"msg" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
},
"analyzer": "my_analyzer"
}
}
},
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "ngram",
"min_gram": "1",
"max_gram": "2"
}
}
}
}
}
}

2.设置白名单

在腾讯云ES的elasticsearch.yml配置文件中添加本地的ES集群IP白名单.

注意:如果本地使用的是内网,需要开通外网访问地址和端口,这里白名单的ip和端口也要换成外网的

#reindex.remote.whitelist: ["ip:9200","ip2:9201"]  迁移数据白名单
reindex.remote.whitelist: ["localhost:9200"] #跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"

3.准备_reindex的设置

可根据个人业务需求,自行选择下面需要的配置选项和设置

  • "scroll": 每次复制5M的数据,一般设置为5-15 M性能较佳,根据服务器性能自行选择

  • "wait_for_completion": false 设置不用前台等待返回结果,后台自动执行

  • "max_docs": 定义只同步100个文档

  • "conflicts","op_type":这两个一般一起使用,op_type to create将导致_reindex仅在目标索引中创建缺少的文档,但是会报导致版本冲突中止_reindex操作,可以设置 “conflict”:"conflicts": "proceed",_reindex进程将继续发生版本冲突并返回遇到的版本冲突计数。(不建议使用,ES会自动处理ID相同的数据覆盖删除)

  • "source": 本地要迁移的ES索引设置

  • "remote":本地ES的对外地址,超时时间设置

  • "index": 本地要迁移的ES索引名称

  • "_source": 可设置保留只需要迁移的索引字段

  • "query": 可设置筛选条件

  • "size": 每次传输文档的数据量,默认值为1000,可设置为5000-20000

  • "dest": "index" 腾讯云要接受数据的索引,第一步创建的那个

POST  /_reindex?scroll=5m&wait_for_completion=false
{
"max_docs": 100,
"conflicts": "proceed",
"source": {
"remote": {
"host": "http://:9200",
"socket_timeout": "5m",
"connect_timeout": "300s"
},
"index": "test1",
"_source": ["name", "msg",],
"query": {
"match": {
"name": "小明"
}
}
"size": 5000
},
"dest": {
"index": "test1",
"op_type": "create"
}
}

4.执行命令,迁移数据

以下都在腾讯云的kibana中执行的

设置不刷新和副本数位0

PUT /test1/_settings
{
"refresh_interval": -1,
"number_of_replicas": 0
}

执行第三步创建的_reindex

POST  /_reindex?scroll=5m&wait_for_completion=false
{
"max_docs": 100,
"conflicts": "proceed",
"source": {
"remote": {
"host": "http://:9200",
"socket_timeout": "5m",
"connect_timeout": "300s"
},
"index": "test1",
"_source": ["name", "msg",],
"query": {
"match": {
"name": "小明"
}
}
"size": 5000
},
"dest": {
"index": "test1",
"op_type": "create"
}
}

等待数据执行,使用 GET _cat/indices 命令查看数据执行结果量

GET _cat/indices

数据全部执行完后,恢复原本要设置的刷新间隔和副本数.

扩展:关于副本数数量设置,可参考我另一篇引用文章中ES的集群原理二、ES集群核心原理分析:

PUT /index_paytrade_v1/_settings
{
"refresh_interval": "30s",
"number_of_replicas": 1
}

好了,至此就大功搞定了,可以进行查询数据测试了。

关于ES数据迁移腾讯云还有其他3种方式

  • elasticsearch-dump
  • snapshot
  • logstash

具体可参考腾讯云的官方文档地址 : https://cloud.tencent.com/document/product/845/35568

本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)的更多相关文章

  1. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器

    说明:大数据时代,传统运维向大数据运维升级换代很常见,也是个不错的机会.如果想系统学习大数据运维,个人比较推荐通信巨头运维大咖的分享课:https://url.cn/5HIqOOr,主要是实战强.含金 ...

  2. 多es 集群数据迁移方案

    前言 加入新公司的第二个星期的星期二 遇到另一个项目需要技术性支持:验证es多集群的数据备份方案,需要我参与验证,在这个项目中需要关注到两个集群的互通性.es集群是部署在不同的k8s环境中,K8s环境 ...

  3. Docker安装部署es集群

    Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...

  4. ELasticSearch(五)ES集群原理与搭建

    一.ES集群原理 查看集群健康状况:URL+ /GET _cat/health (1).ES基本概念名词 Cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产 ...

  5. 本地虚拟机搭建ES集群

    一.环境说明 1.物理机信息(主要): 内存:8G 系统/主频:Win7(旗舰版)64位/3.70GHZ 2.虚拟机信息: VMware Workstation 14 Pro 下载地址: 链接:htt ...

  6. Kubernetes 搭建 ES 集群(存储使用 cephfs)

    一.集群规划 使用 cephfs 实现分布式存储和数据持久化 ES 集群的 master 节点至少需要三个,防止脑裂. 由于 master 在配置过程中需要保证主机名固定和唯一,所以搭建 master ...

  7. Kubernetes 搭建 ES 集群(存储使用 local pv)

    一.集群规划 由于当前环境中没有分布式存储,所以只能使用本地 PV 的方式来实现数据持久化. ES 集群的 master 节点至少需要三个,防止脑裂. 由于 master 在配置过程中需要保证主机名固 ...

  8. ElasticSearch 集群 & 数据备份 & 优化

    ElasticSearch 集群相关概念 ES 集群颜色状态 ①. - 红色:数据都不完整 ②. - 黄色:数据完整,但是副本有问题 ③. - 绿色:数据和副本全都没有问题 ES 集群节点类型 ①. ...

  9. 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上

    阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...

随机推荐

  1. 状态机模式 与 ajax 的结合运用

    太神奇了,昨晚做了个梦,梦中我悟出一个道理:凡是涉及到异步操作而且需要返回值的函数,一定要封装成 Promise 的形式,假如返回值取决于多个异步操作的结果,那么需要对每个异步操作进行状态的设计,而且 ...

  2. Cannot resolve symbol window

    参照官网执行如下代码的时候,报了Cannot resolve symbol window错误. val windowedCounts = words.groupBy( window($"ti ...

  3. Angular 从入坑到挖坑 - 模块简介

    一.Overview Angular 入坑记录的笔记第七篇,介绍 Angular 中的模块的相关概念,了解相关的使用场景,以及知晓如何通过特性模块来组织我们的 Angular 应用 对应官方文档地址: ...

  4. java语言基础-start

    计算机基础 1.1 计算机以二进制存储数据 十进制数据转成二进制数据:使用除以2获取余数的方式 二进制数据转成十进制数据:使用8421编码的方式 1.2 字节 位(bit):一个数字0或者一个数字1, ...

  5. c语言学习笔记第四章——字符串和格式化输入、输出

    B站有视频演示 本章学习printf函数的输入输出,字符串的定义与实用. 字符串 字符串(character string)是一个或多个字符的序列,如下所示: "Zing went the ...

  6. TensorFlow中的显存管理器——BFC Allocator

    背景 作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 使用GPU训练时,一次训练任务无论是模型参数还是中间结果都需要占用大量显存.为了 ...

  7. directive 实例讲解

    http://my.oschina.net/ilivebox/blog/289670 gulp-nodemon http://www.zhihu.com/question/32123388?sort= ...

  8. 洛谷 P1433 吃奶酪 状压DP

    题目描述 分析 比较简单的状压DP 我们设\(f[i][j]\)为当前的状态为\(i\)且当前所在的位置为\(j\)时走过的最小距离 因为老鼠的坐标为\((0,0)\),所以我们要预处理出\(f[1& ...

  9. Mysql常用sql语句(23)- update 修改数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 update 也是DML语句哦(数据操作语言) ...

  10. 接口测试基础——session认证和token认证

    总算是把这个过程理清楚了,现在我们的思路是:what?why?How?,实际上这些个机制产生的内部逻辑是从下至上的的:遇到问题了,想办法解决,总结归纳并取名.从解决一些小问题开始生长,不断打补丁直至完 ...