美文网首页ElasticSearch玩转大数据elasticsearch
五十一、Elasticsearch正排索引doc value再次

五十一、Elasticsearch正排索引doc value再次

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

    1、doc value原理

    (1)index-time生成

    PUT/POST的时候,就会生成doc value数据,也就是正排索引

    (2)核心原理与倒排索引类似

    正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能
    如果os cache内存大小不足够放得下整个正排索引,就会将doc value的数据写入磁盘文件中

    (3)性能问题:给jvm更少内存,64g服务器,给jvm最多16g

    es官方是建议,es大量是基于os cache来进行缓存和提升性能的,不建议用jvm内存来进行缓存,那样会导致一定的gc开销和oom问题
    给jvm更少的内存,给os cache更大的内存
    64g服务器,给jvm最多16g,剩下来的几十个g的内存给os cache
    os cache可以提升doc value和倒排索引的缓存和查询效率

    2、column压缩

    doc1: 550
    doc2: 550
    doc3: 500

    合并相同值,550,doc1和doc2都保留一个550的标识即可

    (1)所有值相同,直接保留单值
    (2)少于256个值,使用table encoding模式:一种压缩方式
    (3)大于256个值,看有没有最大公约数,有就除以最大公约数,然后保留这个最大公约数

    doc1: 36
    doc2: 24

    6 --> doc1: 6, doc2: 4 --> 保留一个最大公约数6的标识,6也保存起来

    (4)如果没有最大公约数,采取offset结合压缩的方式:

    3、disable doc value 禁用正排索引

    如果的确不需要doc value,比如不需要聚合等操作,那么可以禁用,减少磁盘空间占用

    PUT my_index
    {
    "mappings": {
    "my_type": {
    "properties": {
    "my_field": {
    "type": "keyword"
    "doc_values": false
    }
    }
    }
    }
    }

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


    qrcode_for_gh_577b64e73701_258.jpg

    相关文章

      网友评论

        本文标题:五十一、Elasticsearch正排索引doc value再次

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