ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Elasticsearch中复制一个索引数据到新的索引中

2026/9/23 19:21:00 拓冰建站 浏览量
Elasticsearch中复制一个索引数据到新的索引中

问题

我有时候,需要调试一个已经存在的ES索引,需要从已有的索引复制数据到新的索引中去。

解决

这里我借助一个GUI工具,来解决这个问题,底层它是使用Reindex的API实现索引数据复制的。利用Reindex API搞不定这个事情,原索引mapping结构不会被复制。
# 步骤
选中已存在的redix菜单,准备开始负责索引数据,如下图:
redinx
输入将要新建的索引名,开始索引复制,如下图:
redinx新索引
开始索引数据复制,如下图:
redinx进度
等待一段时间,就可以完成索引复制了。
# 检查
利用count的api检查一下文档的数量,看看是否都复制完了。如下图:
count
通过检查新旧两个索引的文档总数,可以知道我们复制基本成功了。

总结

有个Elasticsearch的GUI程序还是挺方便的。虽然,利用Elasticvue工具看似是把数据复制过来了,但是,新生的索引,与旧的索引的mapping结构并不一致,后面利用clone API进行索引复制。

Clone API进行索引复制

PUT old_index/_settings
{"settings": {"index.blocks.write": false}
}

阻塞旧索引写,准备开始克隆旧索引:

POST old_index/_clone/new_index

这样利用clone api,不仅把文档数据复制了一份,而且,还把旧索引mapping结构复制一份给新索引。

参考:

  • elasticvue
  • Reindex API
  • Count API
  • Clone index API