首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch永远不会完成索引

Elasticsearch永远不会完成索引
EN

Stack Overflow用户
提问于 2017-07-20 07:25:51
回答 1查看 56关注 0票数 0

我希望将ES实例从一台服务器迁移到另一台服务器(以及所有数据)。

因此,在the snapshot / restore api之后,我在旧服务器上创建了数据的快照,将其scp'd到新服务器,在新服务器上启动ES的实例,恢复快照,然后在新服务器上重新启动ES。

问题是ES永远不会完成索引。在处理了大约10个索引之后,red索引的数量保持不变(我有大约300+索引)

附注:新的ES实例运行在新服务器上的docker上,而旧的ES实例本地安装在旧的服务器上。

EN

回答 1

Stack Overflow用户

发布于 2017-07-20 20:08:39

这太愚蠢了,但在ES快照/恢复文档中并没有真正记录下来。

在新服务器上执行I called /_snapshot/my_backup/snapshot_1/_restore to restore my snapshot之后,所有索引都显示为yellow状态。因此,我认为我必须停止ES并重启它,以强制它重新索引。

好吧,事实并非如此。一旦你在实例上调用_restore,它就会开始索引数据,并且不会立即完成,即使所有的索引状态都是yellow

因此,当我在调用_restore之后终止ES实例时,实际上只恢复了几个索引(即,在我调用_restore和终止它之间,索引ES有时间进行处理)。当ES重新启动时,它只能重新索引那些它有时间处理的少数索引(我假设其余的索引都被破坏了)。

因此,解决方案很简单:删除我的所有数据,启动ES,调用快照_restore端点,然后耐心地等待ES完成应用restore

我可以使用以下命令监视快照恢复的进度:

curl -XGET 'localhost:9200/_cat/indices?v&pretty' | egrep "(k|m)b" | sort | wc -l

一旦这个数字达到0,我就可以开始工作了(sort,因为我喜欢有序的东西)。

事后看来,这个解决方案是显而易见的……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45202648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档