V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aaa5838769
V2EX  ›  Elasticsearch

ES 数据压缩问题

  •  
  •   aaa5838769 · 2022-04-15 16:46:58 +08:00 · 2101 次点击
    这是一个创建于 713 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:ES 集群已经是百台高配节点。
    
    • 前提条件
    1.单条数据平均大小占用 15K 左右。
    2.每次请求要返回 1 万条的数据量。
    3.会有大量的并发会去这样请求。
    
    • 问题
    目前导致是带宽资源占用比较高,另一个返回的效率比较慢,大家都是怎么优化的,包括数据压缩或者负载均衡策略。
    

    有之前负责 ES 大数据运维的工作,有打算想换环境的想法,可以聊聊。

    7 条回复    2022-04-17 11:07:46 +08:00
    mengzhuo
        1
    mengzhuo  
       2022-04-15 22:37:59 +08:00   ❤️ 1
    最简单是逻辑层加 cache ,查询一致的时候直接回之前缓存的数据,特别是用户会查询的东西可以自己先预热 cache 。

    而且看你的需求,应该是某种 tsdb 的应用范围。预先计算,预先聚集到特定表,减少 aggregate 压力,或者干脆直接换 tsdb 。

    不是 tsdb 的话,每条数据 15K ,也需要尽快垂直拆字段,特别是没啥用的数据,就不要跟着查询压力大的接口放在一起。
    ES 的 shard 机制决定了你的数据肯定会跨节点查询,http gzip 都只是治标不治本的。
    noparking188
        2
    noparking188  
       2022-04-16 02:24:51 +08:00
    好问题,关注
    aaa5838769
        3
    aaa5838769  
    OP
       2022-04-16 10:36:10 +08:00
    @mengzhuo 感谢你的回复,我们库里大概有几十亿条数据,这几十亿条数据,根据用户的需求进行请求查询然后返回数据,未必有耦合的数据。
    mengzhuo
        4
    mengzhuo  
       2022-04-16 21:49:02 +08:00
    @aaa5838769 类似搜索引擎么?那 ES 可不是好选择,可能需要直接建立单独的分词索引服务来完成任务,不过具体我没实施过,你搜搜看搜索引擎实现吧。
    viggoc
        5
    viggoc  
       2022-04-16 23:25:23 +08:00 via Android
    查询条件是什么样的,有排序吗。拉数据一定要获取所以字段吗?不需要的话就只返回部分字段吧
    aaa5838769
        6
    aaa5838769  
    OP
       2022-04-17 10:59:03 +08:00
    @viggoc 可以根据时间范围或者关键词查询,无排序,返回的字段是根据请求参数来决定的,可以全部字段或者部分字段的。
    viggoc
        7
    viggoc  
       2022-04-17 11:07:46 +08:00
    时间范围查询可以考虑数据根据时间字段 index sorting 。返回的字段是从 source 取的话可以考虑用 docvalue_fields 取,从 source 取是要解析 json 的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1096 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:51 · PVG 02:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.