【问题标题】:How to reindex ElasticSearch quickly?如何快速重新索引 ElasticSearch?
【发布时间】:2013-06-05 03:36:42
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: elasticsearch pyes elasticsearch-plugin


    【解决方案1】:

    在谷歌群组中回答:

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

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

    【讨论】:

      【解决方案2】:

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

      好像 Pyes 库有一个reindex 方法,但我没有这方面的经验。

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

      【讨论】:

      • 感谢卡米!您对 90Gb(200M 文档)的索引执行此类操作的预期时间有什么估计吗?
      • 这取决于您是否能够并行化操作。 Elasticsearch 可以处理相当高的写入负载,但重新索引脚本通常是瓶颈。尝试仅重新索引数据的一部分,并推断——扫描/滚动 API 的性能不应随着时间的推移而“衰减”。
      • Tire 似乎已被弃用。 Elastic 现在在这里列出推荐客户:github.com/elastic/elasticsearch-rails
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多