0


亿级以上的数据量 ES如何优化

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

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_42352936/article/details/126202794
版权归原作者 尘心iii 所有, 如有侵权,请联系我们删除。

“亿级以上的数据量 ES如何优化”的评论:

还没有评论