ELK合集持续更新(十):Elasticsearch关键术语之倒排索引
Elasticsearch关键术语 系列博文 目的只用来了解概念 ; 其中 涉及到的配置和使用 是为了方便日后使用时查询的
倒排索引
正排索引 & 倒排索引
正排索引
根据 文档ID 查询 文档内容
倒排索引
根据 文档关键字 查询文档ID 关键字出现处的偏移量 词频
作用
每个field字段都有自己的倒排索引 可被搜索到
特性 – 不可变性
优点
-
无需考虑并发写文件问题 避免了锁机制带来的性能问题
-
一旦读入内核的文件系统缓存 便留在那里 只要文件系统有足够的空间 大部分请求会直接走内存 不命中磁盘 提升很大性能
-
缓存易生成和维护 数据可被压缩
缺点
如果 需要让一个新文档可以被搜索 需要重建整个索引
相关概念
Lucene的index
-
Lucene中 单个倒排索引文件叫Lucene的segment 特点是 自包含的 不可变更的 多个sgement汇总在一起 叫lucene的index 对应es中的shard
-
当有新文档写入时 会生成新的segment 查询时会同时查询所有segments 并对结果汇总 Lucene中有一个文件Commint Point用来记录所有segments信息
-
删除的文档信息 保存在.del文件中
ES的refresh
-
将index buffer写入segment的过程叫refresh refresh后 index buffer被清空 此时segment在缓存中 数据就可以被搜索到了 所以是近实时搜索 refresh不执行fsync操作 (fsync是将缓存中的segment写入磁盘)
-
默认1s发生一次refresh
-
如果有大量数据写入 会产生很多segment
-
index buffer被占满时 也会触发refresh 默认值是JVM的10%
配置refresh的时间
index.refresh_interval
transaction log
- segment写入磁盘过程相对耗时 借助文件系统缓存refresh时 先将segment写入缓存以开发查询
- 为了保证数据不会丢失 在index文档时 同时写入transaction log 默认落盘 每个分片有一个transaction log
- 在es refresh时 index buffer会被清空 transaction log不会清空
ES的flush & Lucene的commit
- 先调用refresh index buffer清空并refresh
- 再调用fsync 将缓存中的segments写入磁盘
- 再清空transaction log
- 默认30分钟执行一次
- 当transaction log写满时 也会触发 默认512MB
ES的merge
- segment很多 需要被定期合并 以减少segment 并 真正删除.del文件中已删除的文档
- ES会定期自动merge
- 手动merge
POST index名/_forcemerge
配置
- 该字段不建立倒排索引
操作
Index的Mapping中 可指定某些字段不建立倒排索引
- 优点 生存储
-
字段无法被搜索
组成
Term Dictionary 单词词典
作用
- 记录所有文档的单词
- 记录单词 到 倒排列表的 关联关系
优化
单词词典一般较大 可用Btree或哈希拉链算法 实现 高性能插入和查询
概念
由倒排索引项组成
Posting 倒排索引项
- 组成 文档ID
- 词频TF
- 位置Position 概念 单词在文档中分词的位置
-
用于语句搜索phrase query
-
概念
记录单词的开始结束位置
-
用于高亮显示
参考
阮一名资料
官方文档
百度
- 点赞
- 收藏
- 分享
- 文章举报
- ELK合集持续更新(十四):Elasticsearch关键术语之Aggregation聚合
- ELK合集持续更新(十三):Elasticsearch关键术语之Analysis分词
- ELK合集持续更新(十二):Elasticsearch关键术语之分布式搜索
- ELK合集持续更新(十一):Elasticsearch关键术语之排序
- python术语(持续更新)
- JavaWeb 常见术语 Wiki(持续更新)
- 常用通讯术语记录(持续更新中)
- ELK合集持续更新(十六):ELK常用命令
- 关于数据库的一些术语(持续更新)
- 多线程相关的一些术语 (持续更新)
- Elasticsearch 思维导图集锦(持续更新...)
- ELK合集持续更新(十五):ELK所有部署与集成
- Elasticsearch 系列文章汇总(持续更新...)
- 金融术语学习【持续更新】
- 术语(更新持续中。。。)
- [elasticsearch笔记] Query DSL [持续更新中]
- elasticsearch 分页 (from+size)(scroll scan) (search after) 详解-->解决深分页 (持续更新)
- CMMI术语表(持续更新)
- IT 术语大全(持续更新)
- elasticsearch学习过程中遇到的问题以及处理方式(持续更新...)