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

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

  •  
  •   Reign · 2017-11-29 20:12:15 +08:00 · 14938 次点击
    这是一个创建于 2311 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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