欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

白话Elasticsearch50-深入聚合数据分析之doc values机制

发布时间:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 白话Elasticsearch50-深入聚合数据分析之doc values机制 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 概述
  • 官网
  • doc value原理
    • (1)index-time生成
    • (2)核心原理与倒排索引类似
    • (3)性能问题:给jvm更少内存,64g服务器,给jvm最多16g
  • column压缩
    • (1)所有值相同,直接保留单值
    • (2)少于256个值,使用table encoding模式
    • (3)大于256个值,看有没有最大公约数,有就除以最大公约数,然后保留这个最大公约数
  • disable doc value


概述

继续跟中华石杉老师学习ES,第51篇

课程地址: https://www.roncoo.com/view/55


官网

doc_values: 戳这里



doc value原理

(1)index-time生成

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


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

正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能

如果os cache内存大小不足够放得下整个正排索引,doc value,就会将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和倒排索引的缓存和查询效率


column压缩

(1)所有值相同,直接保留单值

举个例子

doc1: 100 doc2: 100 doc3: 200

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


(2)少于256个值,使用table encoding模式

了解即可, table encoding 一种压缩方式


(3)大于256个值,看有没有最大公约数,有就除以最大公约数,然后保留这个最大公约数

举个例子

doc1: 36 doc2: 24

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


disable doc value

如果的确不需要doc value,那么可以禁用,减少磁盘空间占用

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

总结

以上是生活随笔为你收集整理的白话Elasticsearch50-深入聚合数据分析之doc values机制的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。