IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 关于es中聚类 与 Doc Values 与 列式存储问题 -> 正文阅读

[大数据]关于es中聚类 与 Doc Values 与 列式存储问题

? 抛砖引玉:我们先来思考一个问题,es中的?agg?桶聚类,等操作是如何来做到的?

如果想要提升聚类的性能,又应该如何做呢?

? 我们可以从?es的底层存储原理中来寻找答案!所以将会学到??Doc Values这个列式存储的数据结构。

? 那又为什么需要列式存储??我提一个需求你大概就能明白了:如果mysql中数据有1000W,如果让你去执行group?by操作,需要多长的时间呢??假如数据有 1 亿、10亿,又需要花多长时间呢?如果能做到秒级别??因为mysql是按行来存储数据的,想要完成这个操作,就得一条一条数据读出来,然后再去计算分组。而列存就不一样了。只需要读出来我们需要?group?by的字段即可。

Doc Values

  1. Doc Values?数据结构能够解决聚类(group?by)的问题
  2. Doc Values?数据结构能够解决?排序的问题

那么doc?value究竟是什么呢?

Doc Values 正排索引

?Doc Values 定义

? 在 Elasticsearch 中,Doc Values 就是一种列式存储结构,默认情况下每个字段的 Doc Values 都是激活的(除了 text 类型),Doc Values 是在索引时创建的,当字段索引时,Elasticsearch 为了能够快速检索,会把字段的值加入倒排索引中,同时它也会存储该字段的 Doc Values。

? 区别于倒排索引的定义,Doc Values 被定义为:“正排索引”。

?

?

?Doc Values 示例

仍然 以 1.2 文档为例,Doc Values 结构如下所示(仅做举例):

Doc

Terms

Doc_1

brown, dog, fox, jumped, lazy, over, quick, the

Doc_2

brown, dogs, foxes, in, lazy, leap, over, quick, summer

Doc values 通过转置两者间的关系来解决适用倒排索引聚合效率低、难以扩展的问题。

对比可以看出:倒排索引将词项映射到包含它们的文档,doc values 将文档映射到它们包含的词项。

?Doc Values 特点

  • 在索引时创建
  • 序列化到磁盘
  • 适合排序操作
  • 将单个字段的所有值一起存储在单个数据列中
  • 默认情况下,除text之外的所有字段类型均启用 Doc Values。

?Doc Values 适用场景

Elasticsearch 中的 Doc Values 常被应用到以下场景:

  • 对一个字段进行排序
  • 对一个字段进行聚合
  • 某些过滤,比如地理位置过滤
  • 某些与字段相关的脚本计算

注意:

因为文档值被序列化到磁盘,我们可以依靠操作系统的帮助来快速访问。

  • 当 工作集(working set) 远小于节点的可用内存,系统会自动将所有的文档值保存在内存中,使得其读写十分高速;
  • 当其远大于可用内存,操作系统会自动把 Doc Values 加载到系统的页缓存中,从而避免了 jvm 堆内存溢出异常。

?Doc Values 使用注意事项

对于不需要:排序、聚合、脚本计算、地理位置过滤的业务场景,可以考虑禁用:Doc Values,以节约存储。

PUT my_index
{
  "mappings": {
      "properties": {
        "title": {
          "type": "keyword",
          "doc_values": false 
        }
    }
  }
}

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:08:20  更:2022-01-16 13:10:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/31 19:14:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码