V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Reign

elasticsearch 支持的数据量太小了,对 50 万行数据查询都是 1 秒多,有没有替代产品?

  •  
  •   Reign · Nov 29, 2017 · 17813 views
    This topic created in 3071 days ago, the information mentioned may be changed or developed.

    如题,MySQL 总共 50 万行数据,30 个字段,全部存到 ES 中查询,平均耗时 1 秒,太慢了,虽然我的是渣渣机械盘,也不至于连 50 万行的数据都支撑不了吧,有没有比 ES 更优秀查询时间优化的更好的免费产品???

    Supplement 1  ·  Nov 29, 2017
    忘了加配置:i5+16G+2T 渣渣 HDD
    Supplement 2  ·  Nov 30, 2017
    是不是 30 个字段同时搜索太慢??我是采用 query_string 的搜索:
    'query' =>
    [
    'query_string'=>
    [
    'query'=>$item,
    "default_operator"=>"AND"
    ]
    ]
    Supplement 3  ·  Nov 30, 2017
    30 个字段是把主要的“ article ”字段翻译成了 29 种语言,大家觉得是不是我把 30 种语言揉和成 1 个大杂烩的字段来搜索,会不会变得更快一点???
    44 replies    2017-12-01 11:42:03 +08:00
    pathbox
        1
    pathbox  
       Nov 29, 2017 via iPhone   ❤️ 1
    我相信不是 es 的锅,是你服务器配置太低,内存太少或是 es 查询姿势错误。
    ming2050
        2
    ming2050  
       Nov 29, 2017 via iPhone
    你需要怎么查询数据?
    dobelee
        3
    dobelee  
       Nov 29, 2017
    普通的全文搜索的话,1 亿数据也不用 1s。
    不说具体的需求就是乱投医。
    zn
        4
    zn  
       Nov 29, 2017 via iPhone
    我跟你讲,区区五十万数据我丢到十美元一年的 VPS 速度都比你这个快。

    这锅 ES 不背。
    winglight2016
        5
    winglight2016  
       Nov 29, 2017
    这个数量级即使放在 mysql 也不会这么久啊?
    pynix
        6
    pynix  
       Nov 29, 2017
    内存应该够了,hdd 的锅吧。。。。
    hljjhb
        7
    hljjhb  
       Nov 29, 2017
    先问是不是 再问有没有
    asuraa
        8
    asuraa  
       Nov 29, 2017
    没有吧 我 3000 多万条查询也不到三分之一秒啊
    iyaozhen
        9
    iyaozhen  
       Nov 29, 2017 via Android
    每天差不多上亿条。除了 SSD 装不下其它没事问题。
    xjqxz2
        10
    xjqxz2  
       Nov 29, 2017
    你是不是把 HEAP 设小了 o.o
    knightdf
        11
    knightdf  
       Nov 29, 2017
    这个锅 ES 可不背
    murmur
        12
    murmur  
       Nov 29, 2017
    怀疑你分词有问题
    Morriaty
        13
    Morriaty  
       Nov 29, 2017
    你 show 一下 query 啊,要是各种 aggs 当然慢啊
    locoz
        14
    locoz  
       Nov 29, 2017 via Android
    锅不要乱甩。。es 查几千万的数据也就 1 秒不到
    mengzhuo
        15
    mengzhuo  
       Nov 29, 2017 via iPhone
    索引要自己定义
    减少分析类的
    减少 shard
    bobuick
        16
    bobuick  
       Nov 29, 2017
    50w 数据能慢到 1 秒的话,es 早就在 0.5 版本前被市场喷死在窝里了。
    zhx1991
        17
    zhx1991  
       Nov 30, 2017
    你用的有问题

    而且就 50w 的数据, 扔在 mysql 里查也是 5ms 以内就能返回
    dangyuluo
        18
    dangyuluo  
       Nov 30, 2017
    感觉是你 mapping 不对
    lyhiving
        19
    lyhiving  
       Nov 30, 2017 via Android
    如果是 50 亿条数据我估计会信
    SharkIng
        20
    SharkIng  
       Nov 30, 2017
    ES 对于内存和硬盘要求很高的感觉
    我们的近百亿的数据在 15 个机子上,每个 32G 内存+ 8T 的 SSD,查询大量的时候基本平均 2 秒左右
    按理说你这个数据量应该没问题,试试换 SSD 看能快点不。
    alwayshere
        21
    alwayshere  
       Nov 30, 2017
    @zhx1991 你确定 50W 用 mysql 的 LIKE 查询能在 5ms ?
    fuxkcsdn
        22
    fuxkcsdn  
       Nov 30, 2017 via iPhone
    @alwayshere 听过 mysql 的全文索引吗?
    能否 5ms 我不确定,但 1s 内返回肯定是可以的,上家公司我们 300 万数据也是放 mysql 里用全文索引
    btw,mysql 全文索引和 like 查询是两码事
    kwklover
        23
    kwklover  
       Nov 30, 2017
    才 50 万的数据,这个机器配置不算低了,不过 30 个字段是个核心

    如果每个字段都是跟文章一样的长字段,那么其实 50 万数据跟一般概念的 1500 万数据量差不多,也不算小了。

    楼主的什么系统,要索引 30 个字段?
    janxin
        24
    janxin  
       Nov 30, 2017
    才 50w 数据,es 没问题的
    thinkmore
        25
    thinkmore  
       Nov 30, 2017
    应该是你姿势不对,我们几千万数据也才差不多一秒呢
    jyf
        26
    jyf  
       Nov 30, 2017
    跟你配置有关系 我这里 100 亿的数据 只有五六台机器 也就一秒左右
    vus520
        27
    vus520  
       Nov 30, 2017
    在 1 亿条数据里查找匹配内容,返回前 50 条。
    共有数据 :5392450 条,显示最新 50 条,用时 382 ms
    yanzixuan
        28
    yanzixuan  
       Nov 30, 2017
    @zn 10 刀一年的 VPS 多大内存? es 能跑得起来么?
    well
        29
    well  
       Nov 30, 2017   ❤️ 1
    5 台服务器,2600 亿,近 50TB,无 SSD,也就秒级能出。如果玩不转建议不要玩。
    vus520
        30
    vus520  
       Nov 30, 2017
    @well 50TB 原始数据,还是 50TB 索引之后的数据?我刚刚查了一下,我这不到百亿的数据就 20TB 了。
    well
        31
    well  
       Nov 30, 2017
    @vus520 有自己的数据特点,开启了 source。
    Juice520
        32
    Juice520  
       Nov 30, 2017
    我普通的全文搜索,1 亿数据耗时不到 100ms
    owenliang
        33
    owenliang  
       Nov 30, 2017
    50 万数据磁盘空间 du 看看占了多少,可能内存不太够。
    owenliang
        34
    owenliang  
       Nov 30, 2017
    @owenliang 可以压一点搜索流量,iostat 看看机器的 IO 情况。
    farseeraliens
        35
    farseeraliens  
       Nov 30, 2017 via iPhone
    楼主需要的是用一个 language model 先判别语言,再在该语言特定的列中检索。
    Reign
        36
    Reign  
    OP
       Nov 30, 2017
    @farseeraliens 没特别好用的语言检测代码,你推荐个?
    SoulSleep
        37
    SoulSleep  
       Nov 30, 2017
    自己不会用甩锅系列...
    50w 数据有几十个 G 嘛?
    4C 16G 服务器,0.0xs 跑的飞起
    omygod
        38
    omygod  
       Nov 30, 2017
    16G 内存你给 es 分了多少
    Reign
        39
    Reign  
    OP
       Nov 30, 2017
    @omygod 刚刚 export ES_HEAP_SIZE=10g,重启 ES,查询时间还不是一样,我估计用到假的 ES 了
    allenhu
        40
    allenhu  
       Nov 30, 2017
    每次看到楼主的帖子都想笑
    sunmonster
        41
    sunmonster  
       Nov 30, 2017
    50 万的话,mysql 查询都不用 1s
    jatesun
        42
    jatesun  
       Dec 1, 2017 via iPhone
    ES 配置问题吧?我们这每天两千多万数据查询都秒级响应
    gfh110
        43
    gfh110  
       Dec 1, 2017
    分词的问题吧
    armstrong
        44
    armstrong  
       Dec 1, 2017
    这锅 ES 不背
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5601 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 224ms · UTC 09:10 · PVG 17:10 · LAX 02:10 · JFK 05:10
    ♥ Do have faith in what you're doing.