ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
shengjk18 小时前
当10万天分区来袭:一个让StarRocks崩溃、Kudu拒绝、HDFS微笑的架构故事一 乐8 小时前
鲜花销售|基于springboot+vue的鲜花销售系统设计与实现(源码+数据库+文档)T.O.P_KING8 小时前
Common Go Mistakes(IV 字符串)盒马盒马8 小时前
Rust:Trait 标签 & 常见特征韩立学长8 小时前
基于Springboot儿童福利院规划管理系统o292y1v8(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。y1y1z8 小时前
Spring国际化weixin_307779138 小时前
Jenkins ASM API 插件:详解与应用指南程序员爱钓鱼8 小时前
Node.js 与前端 JavaScript 的区别:不仅仅是“运行环境不同”程序员爱钓鱼8 小时前
用 Go 做浏览器自动化?chromedp 带你飞!ByteX8 小时前
springboot 项目某个接口响应特别慢排查