🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1. 增加 File System Cache 的内存大小 es 查询依赖操作系统的 File System Cache,增加其大小可提高性能,如果能增加到和数据所占用硬盘一样大, 那么es 直接就相当于在内存中查询了, 查询不需要去和硬盘交互了。 2. 优化es索引字段 在创建es索引时,尽量只把需要的字段放到es中,这样es字段占用的内存就缩小了。 3. 数据预热 经常会有人访问的数据,提前访问一下,这样数据就会保存到 file system cache 中,下次用户访问的时候,查询性能会好很多。 4. 冷热数据分离 数据拆分,把冷热数据存储到不同的索引中,大量不搜索的字段,拆分到别的存储中去并且部署到不同的物理机上,类似mysql分库分表的垂直拆分。保证热点数据访问的性能。这样的话热数据本身就少,内存足够的话全都保留在file system cache里面了,就可以确保热数据的访问性能是很高的。 5. 禁止深度分页查询 限制分页的总页数,很多知名网站的搜索页码都是有上限的,搜索网站也是如此,限制分页总页码很有必要。 深分页查询性能很差,es 默认也限制了查询的总条数,之前做测试2亿多条es数据,查询最后一页直接把系统卡死到了,当然我们的服务器本身也不行。