重新编制弹性搜索需要很长时间

问题描述

这是方案: 在Index1中,我有超过60 00000条记录,在同一索引中,我以每秒630条记录的速度放置数据,然后根据此文档创建了另一个索引Index2并启动了重新索引: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/docs-reindex.html

转移新索引中的1000条记录花费了40多分钟,但是如果我根本不做put,那么相同的重建索引就需要5分钟。

有没有一种方法可以使我以更快的速度重新索引,即使我将数据以每秒600条记录的速度放置,为什么还要花这么长时间 我正在使用AWS弹性搜索7.7版,m4.large.elasticsearch 2个节点

解决方法

Elastic的读取,尤其是写入速度,主要受基础存储的I / O约束所限制。如果您停止建立索引,则重新索引将加速,因为有更多的IOPS和带宽可用于重新建立索引。

尝试使用SSD或NVMe-SSD更快的磁盘,并防止network-attached (ESB) storage赞成instance storage volumes,至少provision所选存储中所需的IOPS +带宽。

,

由于索引编制缓慢,ibexit可能是正确的。您的硬盘有问题。

但是它们也是一些最佳实践,可以节省您一些时间。 首要建议是禁用副本并刷新目标索引以建立索引时间。 并在完成后重新启用它。 index.number_of_replicas:0 index.refresh_interval:-1

您可以在这里阅读一篇非常好的文章: https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html

,

除了@Ibexit和@Jay答案外,我想强调的是,可能有多种导致速度缓慢的原因,这可能是由于ES设置以及您正在使用的应用程序(以及您使用的方式)来重新编制索引数据。

我写了一个博客,涵盖了ES和应用程序方面的问题,并重点介绍了改善specifically re-indexing performance的简短提示,并且您也可以使用free checkup tool,which gives recommendation on ES settings and other best practices来捕获任何特定于用户或敏感的信息数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...