请教一个关于 clickhouse 和 es 检索的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
so2back

请教一个关于 clickhouse 和 es 检索的问题

  •  
  •   so2back Sep 9, 2023 1948 views
    This topic created in 974 days ago, the information mentioned may be changed or developed.

    目前在做一个日志分析模块,里边有个分页展示所有日志的页面,并且可以按条件搜索,主要还是根据关键字去模糊搜索日志,类似 like '%关键字%' 这种。

    我翻了下 clickhouse 的官方文档,找到 like 这种查询的优化可以用 tokenbf_v1 索引,但是我模拟了 1 亿数据量的日志,发现直接用 like '%%'并不走索引,只能用 hasToken()函数才行,但是这种函数的方式更像是分词匹配(确实这个索引的逻辑也是这样),不是 like 原本的逻辑。而且,tokenbf_v1 索引在低命中率的时候效果才明显,高命中率的时候依旧等于全表扫描。

    我测试下来发现 clickhouse 并不能完全满足我。我想请教下 clickhouse 是否还有其他的优化是我未知的,或者 es 是否可以满足这种需求( es 我还没怎么接触过)。现在我测试的 1 亿数据,命中有 900w 数据时,select count()出来的时间要 100 来秒,太慢了。不知道 es 的情况会怎么样。

    15 replies    2024-08-14 22:32:01 +08:00
    dode
        1
    dode  
       Sep 9, 2023
    增加 clickhouse 节点,划分多个独立硬盘分区数据呢
    vitoliu
        2
    vitoliu  
       Sep 9, 2023
    clickhouse 不清楚
    es 可以通过 ngram+term query 进行查询。只有一亿数据的话可以尝试下,p99 肯定是可以做到一秒以内。
    也可以先 suggester 查询,不行再使用 wildcard 查询,但是注意要限制字符长度。
    so2back
        3
    so2back  
    OP
       Sep 9, 2023
    @dode 机器不在我手上,没办法尝试- -
    so2back
        4
    so2back  
    OP
       Sep 9, 2023
    @vitoliu 好的谢谢,起码有个思路,我针对性的去测试一下
    vitoliu
        5
    vitoliu  
       Sep 9, 2023
    @so2back #4 嗯,这么说来你们是自运维的 infrastructure ?全文检索场景肯定是优先 ES 的。而且 ES 集群对外能提供多种能力,业务普适性比 clickHouse 强。
    vincent7245
        6
    vincent7245  
       Sep 10, 2023
    大哥你是不是用错场景了,clickhouse 是做 OLAP 的,你只结把日志怼进去查是不是太粗暴了
    so2back
        7
    so2back  
    OP
       Sep 10, 2023
    @vincent7245 主要看了好几个像携程、唯品会、石墨啥的博客说把日志从 es 转到 ck ,所以我在想 ck 是不是可行的,但我实际测试下来好像又不是一回事,可能场景不同吧,我这种场景太暴力了,就单纯的 like
    kneo
        8
    kneo  
       Sep 10, 2023 via Android
    like 是很难索引的。而且你返回结果太大了。有必要 900 万条都返回?看得过来嘛……
    so2back
        9
    so2back  
    OP
       Sep 10, 2023
    @kneo 做出来给别人用的,如果真有这么多数据,然后有人这么搜索的话感觉要直接炸裂,到时候就真要回炉重做了- -
    yudoo
        10
    yudoo  
       Aug 5, 2024
    @so2back 最后用 ck 了吗,tb 级别的日志是不是还是 es 合适,
    最后老哥上亿的数据咋生成的
    so2back
        11
    so2back  
    OP
       Aug 6, 2024
    @yudoo #10 es 和 ck 都用了,不过我这边没深度研究,目前就是搜索用的 es (每天数据写到不同的 index 里),但是限制了页面只能查看 es 默认的 1w 条数据(带搜索),整体搜索还行吧,我这边要求不是很高;其他一些非及时性的就用的 ck 。我这边是 flink 任务同时写 es 和 ck 的。上亿数据是客户那边的,因为我们是用 flink 对接的他们的日志,日志很多,每天都是几十上百亿的。。。
    so2back
        12
    so2back  
    OP
       Aug 6, 2024
    @yudoo #10 以我那个时候看的,如果想要精确点的搜索,用 ck 不太现实,可以看下 ck 官网有写具体的实现,我记得是不太准的
    yudoo
        13
    yudoo  
       Aug 14, 2024
    @so2back 今天测试了下 ck7000 万数据只要不是全表扫描查询没啥问题, 占用硬盘大约 35G, es 要两百多 G
    你是用 flink 采集数据到 ck 的吗
    so2back
        14
    so2back  
    OP
       Aug 14, 2024
    @yudoo #13 是的,数据都是从 kafka 写入到 ck 和 es 的
    yudoo
        15
    yudoo  
       Aug 14, 2024
    @so2back 精确的搜索应该没问题的,es 可能因为分词的原因会有不精确的搜索
    日志采集你们是什么方案
    About     Help     Advertise     Blog     API     FAQ     Solana     1068 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 23:13 PVG 07:13 LAX 16:13 JFK 19:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86