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

600W 数据量存 ES, 64G 内存+机械盘, ES 占用 32G 内存,查询时间 300ms~400ms 正不正常?

  •  
  •   alwayshere · 2018-08-31 10:24:13 +08:00 · 3486 次点击
    这是一个创建于 2265 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 一个页面 300ms~400ms 的查询时间会不会影响 SEO ?
    2. 对于 text 字段我都设 fielddata:true,这样的话 600W 数据量应该全部在内存中吧,为什么在内存中查询时间还是这么慢?就不能控制在 100ms 以下?
    3. 既然已经设为 fielddata:true,在内存中搜索,同一个关键词第一次搜索 300~400ms,重新搜索该关键词,马上控制在 50ms 以下了?试了很多关键词都这样
    12 条回复    2018-09-01 00:40:50 +08:00
    Morriaty
        1
    Morriaty  
       2018-08-31 10:41:51 +08:00
    1. 集群几个 nodes ?索引几个 shards ?什么样的 mapping ?什么样的 query ?
    2. fielddata 是为了 text 类型做 agg 用的
    3. es 有缓存
    alwayshere
        2
    alwayshere  
    OP
       2018-08-31 11:13:57 +08:00
    @Morriaty 就单机版,'number_of_shards' => 1,'number_of_replicas' => 1,就简单的在两个 text 字段中查询,然后按照一个 integer 字段进行 function score 排序,field_value_factor modifier 是 log1p,boost_mode 是 multiply
    tongxiaomu
        3
    tongxiaomu  
       2018-08-31 11:19:43 +08:00
    首次检索的时间用时有些不正常,600W 数据,简单的 query 查询应该在 100~200ms 左右,至于第二次查询为什么时间很低,基本上是 10+-ms 的级别,建议 lz 先了解下 es 的缓存机制,就类似于 mysql 查询其实也会有缓存的,多了解下这个对以后查询优化也是有帮助的。
    Morriaty
        4
    Morriaty  
       2018-08-31 11:42:04 +08:00
    @alwayshere 改成四个分片,over
    alwayshere
        5
    alwayshere  
    OP
       2018-08-31 13:13:47 +08:00
    @Morriaty 谢谢,刚刚研究了一下 ES 的文档,是不是可以猜想为 CPU 有多少个核,分片数就该有多少?比如我的服务器目前是 4 核 8 线程,是不是该设置成'number_of_shards' => 4,'number_of_replicas' => 1
    alwayshere
        6
    alwayshere  
    OP
       2018-08-31 13:25:21 +08:00
    @Morriaty 数据量不大,就 8G 左右的数据
    misaka19000
        7
    misaka19000  
       2018-08-31 13:27:32 +08:00
    单机可以把 R 分片设为 0
    daigouspy
        8
    daigouspy  
       2018-08-31 13:28:38 +08:00 via Android
    @alwayshere 才 8g 数据,全部扔内存里也不至于那么慢吧?
    alwayshere
        9
    alwayshere  
    OP
       2018-08-31 17:28:06 +08:00
    @daigouspy 我就是用 fielddata:true,这样把 text 字段全扔内存啊,有没有其他方式可以让 ES 将所有数据常驻内存?
    owenliang
        10
    owenliang  
       2018-08-31 20:14:05 +08:00 via Android
    机械盘血亏
    winglight2016
        11
    winglight2016  
       2018-08-31 21:00:52 +08:00
    使用默认配置都不会这么慢啊,我在本地 pc 上默认安装,数据 800 多万条,3.6g ,随便条件查询一下只要 7ms,只有全匹配才会用到 400-500ms

    另外,java 内存可以看看设置了多少,能不能调大一点
    wsc449
        12
    wsc449  
       2018-09-01 00:40:50 +08:00
    客户数据 1 千万+,存储在单台 2 核 8g 内存下查询不超过 500 毫秒,3 台集群下并发查询和更新效率更好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:23 · PVG 04:23 · LAX 12:23 · JFK 15:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.