本地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. appium安装的permission deny处理方法-20200204

    npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ...

  2. laravel生成key失败

    laravel生成key失败 生成KEY失败.原因是没有复制.env文件 In KeyGenerateCommand.php line 96: file_get_contents(D:\project ...

  3. 弹性盒模型中flex-grow 和flex的区别

    在flex弹性盒模型体系中,flex-grow和flex都有对子元素进行放大的作用,但是这两个属性在放大时的计算方法不同,在使用时候要注意,使用正确的放大属性,从而达到自己想要的效果. 先来看下两个属 ...

  4. python根据列表创建文件夹,拷贝指定文件

    内容涉及:关键字定位,列表去重复,路径组装,文件夹创建,文件拷贝,字符串分割 list.txt的内容为包含关键字的文件路径,如:关键字 ’181‘ org/20190523/1/20190523201 ...

  5. 为什么 group by后面 必须跟selecte 后面的除了聚集函数外的所有字段

    如:SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name 可以而SELECT store_name, add ...

  6. Python之浅谈生成器

    目录 三元表达式 列表推导式 字典生成式 生成器 生成器表达式 匿名函数 三元表达式 a=0 b=6 print (a)if a>b else print(b) 三元表达式只能写if的双分支结构 ...

  7. Spring — 循环依赖

    读完这篇文章你将会收获到 Spring 循环依赖可以分为哪两种 Spring 如何解决 setter 循环依赖 Spring 为何是三级缓存 , 二级不行 ? Spring 为啥不能解决构造器循环依赖 ...

  8. pdfjs优化,实现按需加载,节省流量和内存

    1 问题 当使用pdfjs来实现预览功能的时候,遇到了2个问题: 一是带宽占用过大,会下载整个pdf文件,这对部署在公网的应用来说,成本压力很大,因为云服务带宽是很贵的. 二是内存占用过大,一个80M ...

  9. 大多数人可能都不会使用socketTimeout,看了底层才知道一直都做错了

    前几天一个机房网络抖动,引发了很多对外请求的超时问题,在发生问题排查日志的时候,发现了这么一个现象,httpclient我们的请求超时时间并没有按照我们的设置报超时异常 我们的大概配置如下: Requ ...

  10. 【第五空间智能安全大赛】hate_php WriteUp

    环境:https://www.ctfhub.com/#/challenge 打开题目可以看到源码: 阅读源码发现过滤掉了f l a g . p h / ; " ' ` | [ ] _ =这些 ...