ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
十二同学啊4 分钟前
Drools规则引擎:让复杂业务规则从代码中解耦打工仔折腾 AI26 分钟前
Pascal Editor 本地部署实战:Bun 启动 WebGPU 3D 编辑器并解决公网访问报错用户EasyAdminBlazor1 小时前
EasyAdminBlazor 2.3 源码架构解析:Blazor Admin 请求到底是怎么跑起来的?企业数字化笔记1 小时前
一批相同的电脑怎么建账?数量管理、单件编码和拆分规则初学AI的小高1 小时前
从LangGraph到DeepAgents:理解AgentHarness摇滚侠2 小时前
《Spring Boot 3:高级与架构设计》第 1 章 元编程与元信息 个人理解 1对象存储与RustFS2 小时前
跨实现迁移 MinIO→RustFS:mc diff 静默返回才是最容易翻车的一步吃饱了得干活2 小时前
Java 单点登录实战:一条主线看懂 Session 共享、CAS 与 OAuth2+JWT