tellmeworld
V2EX  ›  Elasticsearch

elasticsearch 首次搜索过慢的问题, 4 千万数据

By tellmeworld at 2022 年 11 月 9 日 · 9778 次点击

版本:elasticsearch 7.8

索引就两个字段,id 和 content ,主要就是实现 content 的模糊搜索

现在单索引 4000 万数据,大小为 35G ,机器内存 16G

刚开始一千多万数据的时候第一次搜索 2-3 秒,后面搜索基本上 1-2 秒

两千多万的时候首次搜索 5-6 秒,后面搜索 2-3 秒

现在三千多万数据了,首次搜索达到了 10 秒,后续搜索 3 秒左右

这种情况怎么做预加载?看手册用 Eagerly load fielddata 和 Eagerly load global ordinals 都行不太通,内存分给 es 就 8G ,content 字段肯定就超过 30G 了,不可能丢到内存里面去。

还有什么办法?

11 条回复  •  2022-11-10 09:17:19 +08:00
encro
   1
encro  
   2022 年 11 月 9 日
多分几个 index ?
多少核?
用什么分词?
预热能不能解决问题?
你以前用什么方案?
encro
   2
encro  
   2022 年 11 月 9 日
这么久是索引没做好吧?
sadfQED2
   3
sadfQED2  
   2022 年 11 月 9 日 via Android
16G 内存的机器搞毛 es 啊,实在不想,你 16g 的机器最少也得开 3 台吧。
tellmeworld
   4
tellmeworld  
OP
   2022 年 11 月 9 日
@encro 就一个 index ,英文的,不用分词,以前一两千万搜索 2 3 秒还能接受,数据量这么大又只有一个 index ,一个字段(除 id),这个要怎么做预热?
tellmeworld
   5
tellmeworld  
OP
   2022 年 11 月 9 日
@sadfQED2 个人开发的项目,不是公司的,没有资金堆😪
sadfQED2
   6
sadfQED2  
   2022 年 11 月 9 日 via Android
Mapping 和查询语句发出来看看
zhady009
   7
zhady009  
   2022 年 11 月 9 日 via iPhone
Sonic 应该更适合你,但是现在要迁移数据改客户端代码什么的估计也不太愿意做
zzl22100048
   8
zzl22100048  
   2022 年 11 月 9 日
内存不够,不应该用 es
statumer
   9
statumer  
   2022 年 11 月 9 日
现在一条 32g 内存只要三百多块钱。。
encro
   10
encro  
   2022 年 11 月 10 日
https://juejin.cn/post/6844903862545940494

虽然讲的不清楚,但是记得官方文档里面都有,而且有中文官方文档。
opengps
   11
opengps  
   2022 年 11 月 10 日
先做几个常见的查询,预热只是加载那些匹配高的热数据
© 2026 V2EX · 29ms · 3.9.8.5