ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
uzong3 小时前
技术故障复盘模版GetcharZp4 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent桦说编程4 小时前
Java 中如何创建不可变类型IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统wyiyiyi4 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例阿华的代码王国5 小时前
【Android】RecyclerView复用CheckBox的异常状态Jimmy6 小时前
AI 代理是什么,其有助于我们实现更智能编程AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则bobz9657 小时前
pip install 已经不再安全寻月隐君7 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端