其他分享
首页 > 其他分享> > 本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)(转载)

本地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的设置

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

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种方式

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

标签:index,reindex,analyzer,设置,type,ES,亲测
来源: https://www.cnblogs.com/solomoon/p/13371451.html