ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
IT_陈寒19 分钟前
Python闭包里藏的这个坑,差点让我加班到凌晨IT_陈寒20 分钟前
Java注解空指针?这个坑我踩得莫名其妙土狗TuGou1 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别ZengLiangYi1 小时前
React Query + REST API 最佳实践星浩AI1 小时前
项目实战:合同智能审批 · LangGraph + HITL 人机协同方案 [有源码]JavaGuide1 小时前
Codex 接入第三方模型 DeepSeek、GLM、Kimi 教程:CC-Switch 和 Codex++ 两种方案对比ZengLiangYi1 小时前
Fastify 加 Electron:把 Web 服务嵌进桌面应用李白你好2 小时前
页面资产梳理 · 技术指纹识别 · Spring 端点探测用户1753721240332 小时前
02《面向对象设计原则:SOLID原则实战解析》我是一颗柠檬2 小时前
【Java后端技术亮点】热Key探测与本地缓存二级防护:Redis热点问题的终极解决方案