1 增大fileSystem cache容量

	fileSystem cache存的是最近搜索过、然后缓存下来的索引文档数据,会存放在堆内存外的 系统缓存里
	给es服务器多分配内存,增大此缓存的容量,即可增加查询性能

2 es只负责存储核心关键数据

	通过es查询出关键数据以后,再通过mysql/Hbase去查询其他相关数据
		建议 ES+Hbase
	   最佳实践,某个节点的内存=  节点上文档总大小的一半
		若文档数据远远大于内存,性能肯定不行,所以只存储海量数据里的关键字段
		否则和  mysql没啥区别,缓存空间太小,热数据被频繁刷掉,每次都是io查询磁盘

3 冷热分离

	热数据放到索引a里,冷数据放到索引b里
	尽量把两种索引分开存放,热数据和冷数据分别在不同节点上
	
	以业务类型区分冷热数据
	以时间区分冷热数据
	   (定时任务 把n天前的数据 转移到冷节点里,在热节点里删除,在冷节点里新增)

4 数据预热

	自己搞个脚本/定时任务/系统
	专门去搜搜热数据
		把热数据文档缓存到内存里
			其他用户访问时就不用走io了

5 业务

	a 避免深度分页,深度分页可能会导致 查询从 级ms 变成几s
		,改设计,下拉方式刷新
			技术实现
					1 scroll api
					2 es自身的search_after 也支持这种优化方式
			这也是为什么很多网站都不允许翻页的原因
	b 避免大结果集查询
	c 避免复杂查询如 join/nested/parent-child文档关联、集合嵌套、父子文档嵌套

6 文档结构设计

	把相关数据关联处理以后,再存入es

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐