我执行了update_by_query
,将值从一个字段复制到另一个目标为8000万个文档的字段。我在AWS上托管了Elasticsearch。在执行期间,我监视了指标并发现了一个有趣的问题。
在执行过程中,我看到可用存储空间急剧下降,在执行完成后又上升了。
那段时间发生了什么?
答案 0 :(得分:1)
Concerning FreeStorageSpace
是AWS所说的:
集群中节点的可用空间(以兆字节为单位)。总和显示群集的总可用空间。最小,最大和平均显示单个节点的可用空间。当该指标达到0时,Amazon ES会引发ClusterBlockException。要进行恢复,您必须删除索引,添加更大的实例或将基于EBS的存储添加到现有实例。
然后,您需要了解按查询更新的工作方式。基本上,它将重新索引每个文档的新版本。因此,基本上,如果您对所有文档进行了更新,则ES在创建新版本时会将它们标记为已删除。删除的文档将占用空间,直到发生段合并,这将擦除所有标记为已删除的文档,这是您在此过程中每次曲线再次上升时都可以看到的。
最后,看来您复制的字段已消耗了60K单位的存储空间(420K-360K)。