栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

elasticSearch-优化篇

elasticSearch-优化篇

查询优化

建议
索引设计角度:

  • 避免一个索引有过多的分片
  • 控制单个分片的大小:search 20GB, log 40GB
  • force merge 只读索引,较少segment数量
  • 尽可能 Denormalize(反规范化) 数据,从而获取最佳的性能
    • 不使用嵌套类型对象,使用 Nested 类型的数据。查询速度会慢几倍
    • 不使用父子关系类型对象,使用 Parent / Child 关系。查询速度会慢几百倍
      查询语句角度
  • 尽量将数据先行计算,然后将数据保存在es中,避免查询时使用脚本计算
  • 尽量使用Filter Context, 利用缓存机制,减少不必要的算分
  • 结合profile,explain API 查询慢查询原因,持续优化数据模型
  • 避免使用通配符(*)开头的查询,如wildCard模糊查询。有什么方案可以替代模糊查询呢?
写入优化

建议

  • 降低IO操作
    • 降低IO频率,如增大refresh频率的间隔时间
  • 降低CPU和存储的开销
    • 减少不必要的分词,dov_value/fielddata, 文档的字段尽量保证相同的顺序,可以提高文 档的压缩率
  • 尽可能做到写入和分片的负载均衡,实现水平扩展
  • 关闭无关的功能
    • 只需要聚合不需要搜索, Index 设置成 false
    • 不需要算分, Norms设置成false
    • 关闭_source, 减少IO操作,适合指标型数据
    • 不要对字符串使用默认的 dynamic mapping。字段 数量过多,会对性能产生比较大的影响
    • Index_options 控制在创建倒排索引时,哪些内容 会被添加到倒排索引中。优化这些设置,一定程度 可以节约 CPU
  • 暂时性的牺牲可靠性和实时性来提高数据写入速度
    • 牺牲可靠性:副本分片数设置成0,写入完毕再调整回去;修改transLog的配置
      • Index.translog.durability:默认是 request,每个请求都落盘。设置成 async,异步写入
      • Index.translog.sync_interval 设置为 60s,每分钟执行一次
      • Index.translog.flush_threshod_size: 默认 512 mb,可以适当调大。 当 translog 超过该值,会触发 flush
    • 牺牲搜索实时性:增加refresh Interval的时间
      * Refresh Interval:增大refresh_interval
      * 增大静态配置参数 indices.memory.index_buffer_size,默认10%会触发refresh
索引设计最佳 疑问

怎么在保证es在高写入的情况下,不产生查询延时

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号