ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
武子康5 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效舒一笑5 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦@昵称不存在6 小时前
Flask input 和datalist结合zhuyasen7 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单东林牧之7 小时前
Django+celery异步:拿来即用,可移植性高超浪的晨8 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程AntBlack8 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化Pomelo_刘金8 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉双力臂4049 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成midsummer_woo10 小时前
基于spring boot的医院挂号就诊系统(源码+论文)