6

我有一个包含大约 200M 文档的 ElasticSearch 索引,总索引大小为 90Gb。

我更改了映射,所以我希望 ElasticSearch 重新索引所有文档。

我编写了一个脚本来创建一个新索引(使用新映射),然后遍历旧索引中的所有文档,然后放入新索引中。

它似乎工作,但问题是它工作得非常缓慢。前两天开始是300个文档/分钟,现在速度是150个文档/分钟。

该脚本在弹性搜索机器所在的同一网络内的机器上运行。

以这样的速度,完成重新索引需要一个月的时间。

有人知道一些更快的技术来重新索引弹性搜索索引吗?

4

2 回答 2

4

在谷歌群组中回答:

选项 A: 使用批量索引操作。

选项B: 使用在ES机器内部运行的re-index插件:https ://github.com/karussell/elasticsearch-reindex

于 2013-06-11T06:32:02.080 回答
0

使用 Elasticsearch 重新索引的正确方法是使用scanscrollAPI,这应该得到 Pyes 的支持。

Pyes 库似乎有一种reindex方法,但我没有使用它的经验。

(如果您在 Python 上使用 Ruby 会克服 :),Tire Ruby 客户端有一个Index#reindex方法:https ://github.com/karmi/tire/blob/master/test/integration/reindex_test.rb 。对于您的数据,它应该足够快。)

于 2013-06-09T15:56:11.280 回答