ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
Asthenia04129 分钟前
详细分析:ConcurrentLinkedQueueuhakadotcom19 分钟前
Ruff:Python 代码分析工具的新选择uhakadotcom23 分钟前
Mypy入门:Python静态类型检查工具喵个咪28 分钟前
开箱即用的GO后台管理系统 Kratos Admin - 定时任务Asthenia041230 分钟前
ArrayList与LinkedList源码分析及面试应对策略Asthenia04121 小时前
由浅入深解析Redis事务机制及其业务应用-电商场景解决超卖Asthenia04121 小时前
Redis详解:从内存一致性到持久化策略的思维链条Asthenia04121 小时前
深入剖析 Redis 持久化:RDB 与 AOF 的全景解析Apifox1 小时前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景掘金一周1 小时前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3