首页 > 编程知识 正文

elasticsearch批量删除数据,elasticsearch原理

时间:2023-05-04 22:10:16 阅读:127926 作者:1285

发生了问题:在实际的过程中,删除文档后没有释放磁盘空间,反而增加了吗?

从索引的维中,使用cat api检查每个索引的shards,segment数。 现在,您可以确定哪些索引需要force merge。 将以下segment count反向,以显示有关所有索引的segment和shards的信息:

以下命令在Kibana图形界面的开发工具中运行

GET /_cat/indices/? s=segmentscount 3360 des cvh=index,segments count,segmentsMemory,memoryTotal,mergesCurrent,mergesCurrentDocs,storry

#! eprecation : elasticsearchbuilt-insecurityfeaturesarenotenabled.withoutauthentication, yourclustercouldbeaccessibletoanyone.see https://www.elastic.co/guide/en/elastic search/reference/7.13/security-minimal-setup.htmltoenablesecurity.indexsegmentscountsegmentsmemorymemorytotalmemergescurrentdocsssssscuration tment docs received 821.7 MB 47.1 MB 099.1 GB 30.kiba na _ 1613.6 kb 13.6 kb 02.1 MB 10.kiba na-event-log-7.10.2-000001510.8 kb 10 pm-custom-Lin k00 b 0208 b 10.APM -代理配置00 b 0208 b 1中出现的每个索引SSR

删除机制删除:在每个段中维护一个. del文件。 ES在逻辑上删除文档,并将. del文件标记为已删除。 仍然可以检测到查询,但会按结果过滤。

1 )删除索引会立即释放空间,不存在所谓的“标记”逻辑。 2 )删除文档时,写入新文档,同时将旧文档标记为已删除。 ES后台的segment merge可能会在segment file合并期间触发旧文档的物理删除,因为磁盘空间是否被释放取决于新旧文档是否位于同一segment file中但是,由于一个shard中可能存在数百个segment file,因此新旧文档很可能存在于不同的segment中,无法物理删除。 要手动释放空间,只能定期运行force merge并将max_num_segments设置为1。

更新:引入版本概念,在. del文件中标记为删除旧版本的记录,并将新版本的文档索引到新段(Segment )。

手动执行forcemerge操作以手动释放磁盘空间

对已删除索引的数据执行force merge

post/mail _ center.received/_ force merge? only _ exp unge _ deletes=true max _ num _ segments=1.以/_cat/indices/api显示所有索引的分段情况和当前合并中的文档数

GET /_cat/indices/? s=segmentscount 3360 des cvh=index,segments count,segmentsMemory,memoryTotal,mergesCurrent,mergesCurrentDocs,storry

2 .显示每个节点的forceMerge线程数

get _ cat/thread _ pool/force _ merge? vs=name

查看forceMerge任务的详细信息

GET _tasks? 详细信息=true actions=* force merge

4 .查看某个索引的forceMerge情况

GET /_cat/segments/test-000032? vs=prirep,shard

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。