ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
SamDeepThinking2 分钟前
Spring Bean作用域的设计与使用前端一课12 分钟前
《NestJS 从入门到资深》书稿(Markdown)Memory_荒年17 分钟前
Java + FFmpeg:从“玩具”到“工业级”的音视频实战awljwlj1 小时前
黑马点评复习—缓存相关【包含可能的问题和基础知识复习】XY_墨莲伊1 小时前
【实战项目】基于B/S结构Flask+Folium技术的出租车轨迹可视化分析系统(文末含完整源代码)神奇小汤圆2 小时前
为什么Claude Code这么强?我从泄漏的源码里挖到了核心秘密精品源码屋2 小时前
千万级CSV/Excel表统计教程:基于本地数据库的自然语言单表、多表分析 | DT-Bot工作流Gopher_HBo2 小时前
CompletableFuture运用原理Leinwin2 小时前
GPT-6 API接入完全指南:Symphony架构下的多模态调用与最佳实践