ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
也无晴也无风雨39 分钟前
深入剖析输入URL按下回车,浏览器做了什么2401_857610034 小时前
多维视角下的知识管理:Spring Boot应用代码小鑫4 小时前
A027-基于Spring Boot的农事管理系统颜淡慕潇5 小时前
【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?独泪了无痕6 小时前
WebStorm 如何调试 Vue 项目怒放吧德德7 小时前
JUC从实战到源码:JMM总得认识一下吧代码小鑫7 小时前
A025-基于SpringBoot的售楼管理系统的设计与实现前端SkyRain7 小时前
后端SpringBoot学习项目-项目基础搭建梦想画家7 小时前
理解Rust 生命周期、所有权和借用机制编程乐趣8 小时前
推荐一个.NetCore开源的CMS项目,功能强大、扩展性强、支持插件的系统!