elasticsearch elasticsearch:如何在删除文档后释放存储大小
在我的elasticsearch服务器上: 文件总数:300万份,总尺寸:3.6G 然后,我删除了大约280万个文档: 文件总数:约13万份,总尺寸:3.6G
elasticsearch elasticsearch:如何在删除文档后释放存储大小,
elasticsearch,
elasticsearch,在我的elasticsearch服务器上: 文件总数:300万份,总尺寸:3.6G 然后,我删除了大约280万个文档: 文件总数:约13万份,总尺寸:3.6G 我已经删除了文档,如何释放文档的大小?删除文档只会将这些文档标记为已删除,因此不会对其进行搜索。要回收磁盘空间,必须优化索引: curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true' 文件: 文档已移至: 更新 从Elasticsearch 2.1
我已经删除了文档,如何释放文档的大小?删除文档只会将这些文档标记为已删除,因此不会对其进行搜索。要回收磁盘空间,必须优化索引:
curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'
文件:
文档已移至:
更新
从Elasticsearch 2.1.x开始,在forcemerge
中进行优化
。
API是,只有端点发生了更改
curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true'
在当前elasticsearch版本(7.5)中
POST/\u forcemerge?only\u expunge\u deletes=true
POST/twitter/\u forcemerge?仅\u expunge\u deletes=true
,其中twitter是索引
POST/twitter,facebook/\u forcemerge?仅删除=true
,其中twitter和facebook是索引
参考资料:knutwalker的答案是正确的。但是,如果您正在使用AWS ElasticSearch并希望释放存储空间,这将不太有效 在AWS上,必须在URL中指定forgemerge的索引。它可以包括通配符,这在索引旋转中很常见
curl -XPOST 'https://something.es.amazonaws.com/index-*/_forcemerge?only_expunge_deletes=true'
AWS发布。将indexname替换为您的。它将立即释放空间
curl -XPOST 'http://localhost:9200/indexname/_forcemerge' -d
'{"only_expunge_deletes": false, "max_num_segments": 1 }'
克努特的回答是正确的。这里有一篇文章更详细地介绍了为什么会这样:你们都很有帮助。非常感谢!我同意,这是一个很好的答案,但是你需要多少空间才能删除删除的文件?我正在运行上述命令,目前(仍在运行)索引增加了10Gig。索引被分成几个部分。优化将合并这些段,同时在过程中删除已删除的文档。索引数据在合并过程中被复制,这就是增加的原因。最坏情况下的合并需要在合并期间使用当前索引大小的2倍,而且这样大的合并很可能需要数小时。如果您否决了答案,请始终添加一条注释,说明为什么解决方案是错误的。