美文网首页ElastichSearchelasticsearch玩转大数据
六十六、Elasticsearch内核原理-优化写入流程,实现N

六十六、Elasticsearch内核原理-优化写入流程,实现N

作者: 编程界的小学生 | 来源:发表于2017-07-12 14:50 被阅读143次

    1、疑问
    每次都必须等待fsync将segment刷入磁盘,才能将segment打开供search使用,这样的话,从一个document写入,到他可以被搜索到,可能会超过1分钟,这就不是近实时搜索了。只要瓶颈在于fsync实际发生磁盘IO写数据到磁盘,是很耗时间的。

    2、写入流程改进如下

    (1)数据写入buffer

    (2)每隔一定时间(最慢1s),buffer中的数据被写入index segment文件,但是先写入os cache

    (3)只要segment写入os cache,那就直接打开供search使用,不立即执行commit

    数据写入os cache,并被打开供搜索的过程,叫做refresh,默认是每隔1秒refresh一次,也就是说,每隔一秒就会将buffer中的数据写入一个新的index segment file,县写入os cache中,所以ES是近实时的,数据写入到可以被搜索默认是1s。

    Paste_Image.png

    比如说,我们现在的时效性要求比较低,只要求一条数据写入ES,一分钟以后才让我们搜索到就可以了,那么就可以调整refresh interval

    PUT my_index
    {
      "settings": {
        "refresh_interval": "1m"
      }
    }
    

    若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
    欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


    qrcode_for_gh_577b64e73701_258.jpg

    相关文章

      网友评论

        本文标题:六十六、Elasticsearch内核原理-优化写入流程,实现N

        本文链接:https://www.haomeiwen.com/subject/sgsbhxtx.html