关于 es 分段合并的问题?

2021-04-23 13:15:46 +08:00
 dong568789

目前一个存储用户信息的索引已经有 40 多个 G,期间通过 POST 索引名 /_delete_by_query 删除了大量数据,占用空间反尔加大了不少,目前想通过_forcemerge?only_expunge_deletes=true&max_num_segments=1 来合并段,不确定做法对不对?

1 、先通过"index.blocks.write": true 将索引设置成只读 2 、执行_forcemerge?only_expunge_deletes=true&max_num_segments=1 3 、"index.blocks.write": fase 设置成读写

目前此索引不停的有新数据写入,打算在凌晨进行操作,另外这个操作耗时大概会多久?

1491 次点击
所在节点    JavaScript
8 条回复
WilliamYang
2021-04-23 13:20:57 +08:00
max_num_segments=1 会有些“极端”, 可以不要设置那么低,如果数据不断有写入,我建议设置为 10 到 100 先吧;我以前的做法是在凌晨 3,4 点执行,因为我的数据比较稳定,因此我设置了 max_num_segments=1,同时因为数据量很大,要 2,3 个小时才完成,期间搜索性能变得很差
WilliamYang
2021-04-23 13:27:06 +08:00
刚看了你的数据量 40 多 G,不算多,应该不到半小时,可以完成吧
dong568789
2021-04-23 13:41:13 +08:00
@WilliamYang 感谢回答,你是否把索引设置为只读在进行操作呢,官方文档原话"
只能对只读索引调用强制合并。对读写索引进行强行合并可能会导致生成非常大的段(每个段> 5Gb ),并且合并策略永远不会考虑将其再次合并,直到它主要由已删除的文档组成为止。这会导致很大的段保留在碎片中。"
dong568789
2021-04-23 13:42:38 +08:00
@WilliamYang 另外我这个索引,在凌晨时的写入基本保持在 1-10 条 /秒
WilliamYang
2021-04-25 10:00:55 +08:00
@dong568789 3 年多前的事了,不好意思,已经忘记得差不多了,只是对数据量,时长特别记得
WilliamYang
2021-04-25 10:02:01 +08:00
@dong568789 我当时用的版本是 5.1 还是多少吧,你现在至少用 7.x 吧
dong568789
2021-04-25 10:40:18 +08:00
@WilliamYang 用的 6.7 的,目前是准备凌晨停机操作了,应该问题不大。
xingguang
2021-04-25 13:38:43 +08:00
这个怎么会在 js 板块

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772694

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX