Java学习笔记____ElasticSearch进阶(二)

ElasticSearch进阶   ——单field索引索引原理

 

目录

## 参考文献传送门

## 与lucene区别

## 索引思路

## 原理简述

## 其他操作(CUD)


## 参考文献传送门:

     索引原理:       我是传送门(
     倒排索引:       我是传送门(
     压缩技术
            缓存压缩我是传送门(FTS
            编码压缩我是传送门(Frame Of Reference


## 与lucene区别:

     1.分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
     2.实时分析的分布式搜索引擎
     3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

 

## 索引思路:

     将磁盘里的东西尽量搬进内存,结合磁盘顺序读取特性减少磁盘随机读取次数,并使用多种压缩算法,最终再以极

     其苛刻的态度使用内存

 

## 原理简述:

     1. Elasticsearch分别为每个field都建立了一个倒排索引(Term-Posting List),结构类似于key-value形式,组成的

         索引表中每一项都包括一个属性值和具有该属性值的各记录地址,由属性值确定目标记录位置
        [注意]:
              1.此处value(Posting List)存储结构为数组结构,即可能存在多条记录属性的属性值相同情况
              2.结合压缩技术(Frame Of Reference)将Posting List压缩处理,按字节存储,提高空间利用率


     2. ES将所有索引排序组成索引表(Term Dictionary),再使用二分法进行查找(logN)


     3. 考虑到如果倒排索引表中记录过多情况,内存中可能不易存储大量数据,故为其建立索引页(Term Index,树形结

         构),其中存储索引部分前缀与其对应表中位置的映射关系
        [注意]:
              1.因为索引页的存在,使得索引时可以快速定位到索引表,从而进一步确定索引所在位置
              2.由于存储的是索引的部分前缀,因此无需再全部存储大量的索引字段数据
              3.即便存在索引前缀重复问题也只需向后执行顺序查找即可,仍然能够大幅度提升查找的效率


     4.结合压缩技术(FST)保证索引表缓存进入内存中,而具体的大量的索引存储于磁盘

 

   整体流程:
          通过内存中索引页索引前缀确定索引表中位置,执行顺序遍历精确到该索引,最

          终根据索引表定位目标记录位置进行获取

    [注意]:
          1.尽量保证索引字段有意义,由于默认自动建索引的,不需要索引的字段,一定要明确定义出来
          2.尽量保证分词字段有意义,由于默认也是会分词的,对于String类型的字段,不需要分词的也需要明确定义出来
          3.尽量保证ID的选择有规律,使用随机性太大的ID(UUID)将不利于查询

 

## 其他操作(CUD):性能较为低下

     由于向Elasticsearch里插入一条记录时,其实就是直接存入一个json格式对象,这个对象有多个fields,并携带相应的

     值,那么在插入这些数据的同时,ES还将为这些字段一一建立倒排序索引,因此使得增删改等操作效率低下,这同时

    也彰显了作为一个优秀的搜索引擎,ES提倡一切的设计都是为搜索功能提供辅助优化这一理念
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值