elasticsearch 小规模数据 跨集群迁移

本文介绍三种从Elasticsearch迁移数据的方法:无需改动的代码迁移、使用Elasticdump的便捷工具迁移以及reindex的远程迁移,重点讲解了每种方法的实现细节和配置要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迁移方法1,通过代码迁移,优点不需要改动任何集群配置和重启器群:

from elasticsearch import Elasticsearch
from elasticsearch import helpers

def get_all_data(table, query_dsl,scroll='5m',timeout='1m'):
    es = Elasticsearch([{'host': "IP", 'port': PORT, "http_auth": "user:passwd"}])
    es_result = helpers.scan(
        client=es,
        query=query_dsl,
        scroll=scroll,
        index=table,
        timeout=timeout
    )
    return es_result


def batch_data(data_list, index_name, _id_name=None):
    """ 批量写入数据 """
    es = Elasticsearch([{'host': "IP", 'port': PORT, "http_auth": "user:passwd"}])
    if _id_name:
        action = [{
            "_index": index_name,
            "_id": data_list[i][_id_name],
            '_type': '_doc',
            "_source": data_list[i]
        } for i in range(len(data_list))]
    else:
        action = [{
            "_index": index_name,
            '_type': '_doc',
            "_source": data_list[i]
        } for i in range(len(data_list))]
    helpers.bulk(es, action)

query_dsl = {
    "query":{
        "match_all":{}
    }
}

es_result = get_all_data("index_name",query_dsl)
result = []
for each in es_result:
    result.append(each.get("_source"))
    if len(result)>3000:
        batch_data(result,"index_name",_id_name="news_id")
        result.clear()

迁移方式2:Elasticdump

迁移方式3:reindex

需要在目标机器的配置中添加旧集群的白名单:

reindex.remote.whitelist: "otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*"

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

参考:es数据跨集群的两种迁移方式_一只行走鸟的博客-优快云博客_es reindex跨集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值