ES索引原理

ES在检索时底层使用的就是倒排索引,正向索引是通过key找value,反向索引则是通过value找key。

索引会分为两个区域:索引区和元数据区。数据是这样存储在里面的:

 

简单理解就是:当要录入一条数据时,首先会将完整的数据插入到元数据区中,就算没有指定id,底层也会自动生成uuid。然后将一个个的字段根据其类型放到索引区存储,如果是非text类型的,需要记录其值和对应这一条数据的id,如果为text类型的,则需要先进行分词,然后将每个词进行一个个存储,顺便记录词出现次数和数据的id,如果这个词已经在索引区存在了,直接将id加入到对应数据id的列表即可

查找的过程:根据字段的值先去索引区中根据值去找到对应的key(数据id),也就是倒排索引,拿到对应的数据id后,再去元数据区直接取整条数据记录,所以效率也就很高。

如下是更细节的存储:

 

注意:ES分别为每个字段都建立了一个倒排索引。因此查询时查询字段的term,就能知道文档ID,就能快速找到文档。  

相关推荐

  1. ES系列索引、文档、集群、技术原理文章目录

    2024-01-16 22:20:02       57 阅读
  2. ES清理索引镜像

    2024-01-16 22:20:02       36 阅读
  3. es 倒排索引

    2024-01-16 22:20:02       44 阅读
  4. es索引同步

    2024-01-16 22:20:02       29 阅读
  5. 修改ES索引名称

    2024-01-16 22:20:02       25 阅读
  6. ES索引模板

    2024-01-16 22:20:02       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-16 22:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-16 22:20:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-16 22:20:02       82 阅读
  4. Python语言-面向对象

    2024-01-16 22:20:02       91 阅读

热门阅读

  1. 集成开发环境(IDE)介绍

    2024-01-16 22:20:02       49 阅读
  2. 贪心算法Day06

    2024-01-16 22:20:02       41 阅读
  3. 11k+star 开源笔记应用真香 centos部署教程

    2024-01-16 22:20:02       55 阅读
  4. QT中线程的退出分析

    2024-01-16 22:20:02       56 阅读
  5. C语言—存储管理

    2024-01-16 22:20:02       49 阅读
  6. 网络基础知识

    2024-01-16 22:20:02       47 阅读
  7. 搭建feign远程调用环境

    2024-01-16 22:20:02       61 阅读
  8. C语言经典算法之快速排序算法

    2024-01-16 22:20:02       53 阅读
  9. [DM8] 序列使用说明

    2024-01-16 22:20:02       56 阅读
  10. 【vue】vue跑马灯vue-marquee-text-component

    2024-01-16 22:20:02       48 阅读