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结构复制一份给新索引。

参考:

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>