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