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

2022-11-09 16:54:37 +08:00
 tellmeworld

版本: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 了,不可能丢到内存里面去。

还有什么办法?

2845 次点击
所在节点    Elasticsearch
11 条回复
encro
2022-11-09 18:55:01 +08:00
多分几个 index ?
多少核?
用什么分词?
预热能不能解决问题?
你以前用什么方案?
encro
2022-11-09 18:56:24 +08:00
这么久是索引没做好吧?
sadfQED2
2022-11-09 19:15:50 +08:00
16G 内存的机器搞毛 es 啊,实在不想,你 16g 的机器最少也得开 3 台吧。
tellmeworld
2022-11-09 19:19:06 +08:00
@encro 就一个 index ,英文的,不用分词,以前一两千万搜索 2 3 秒还能接受,数据量这么大又只有一个 index ,一个字段(除 id),这个要怎么做预热?
tellmeworld
2022-11-09 19:19:57 +08:00
@sadfQED2 个人开发的项目,不是公司的,没有资金堆😪
sadfQED2
2022-11-09 19:21:50 +08:00
Mapping 和查询语句发出来看看
zhady009
2022-11-09 19:38:28 +08:00
Sonic 应该更适合你,但是现在要迁移数据改客户端代码什么的估计也不太愿意做
zzl22100048
2022-11-09 21:11:20 +08:00
内存不够,不应该用 es
statumer
2022-11-09 22:51:52 +08:00
现在一条 32g 内存只要三百多块钱。。
encro
2022-11-10 09:03:23 +08:00
https://juejin.cn/post/6844903862545940494

虽然讲的不清楚,但是记得官方文档里面都有,而且有中文官方文档。
opengps
2022-11-10 09:17:19 +08:00
先做几个常见的查询,预热只是加载那些匹配高的热数据

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

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

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

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

© 2021 V2EX