ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
金金金__30 分钟前
一篇文章带你入门OpenSpec阿维的博客日记1 小时前
MultipartFile 是不是表示仅仅是一个分片?海上彼尚1 小时前
Nodejs也能写Agent - 16.LangGraph篇 - 条件分支与循环Dovis(誓平步青云)3 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比凌虚4 小时前
AI 时代,程序员会消失吗?用户8356290780514 小时前
使用 Python 在 Excel 中添加和自定义文本框干到60岁退休的码农5 小时前
SpringMVC实现Restful api请求方法从零开始的代码生活_6 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理