【ElasticSearch】学习笔记

news/2025/3/16 7:01:52/

一、lucene的组成

segment是一个具备完整搜索功能的最小单元。

多个segment组成了一个单机文本检索库lucene。

  • inverted index:倒排索引,用于快速根据关键词找到对应的文章
  • term index: 构建出关键词的目录树,解决了term dictionary数据量过大,无法加入到内存的问题,通过term index加载到内存中,提高了查询效率
  • Stored Fields:将数据内容持久化到磁盘中。
  • ​Doc Values:基于某种数据(时间、价格)提前排序,用于快速排序查找和聚合。

二、ElasticSearch

1、高性能

  • 一个index name对应一个lucene避免过多的资源争抢
  • 单个index name拆分为shard分片,每个shard分片作为一个独立的Lucene库

2、高扩展

  • 将分片部署在多个机器上,缓解单机压力

3、高可用

  • 存在副本分片,主副封片读写分离,若主分片宕机,副本自动晋升为主分片。
  • node角色分化,各司其职(处理用户请求、处理数据、处理节点管理)。
  • 每个节点存在raft模块,同步各个结点的信息数据,所以node看到的集群状态一致。

三、ElasticSearch的写流程

  1. 用户发送请求到协调节点,协调节点根据哈希路由找到请求对应的node中的分片
  2. 写入到对应分片的lucene库里的segment类的inverted index、term index、sorted field、doc value里面
  3. 主分片将数据同步到副本
  4. 副本携入完成相应主节点发送Ack确认到协调节点,写入操作完成

四、ElasticSearch的读流程

1、Query阶段

  1. 用户发送请求到协调节点,协调节点根据index name查询到分片信息将请求转发到数据节点的
  2. 分片上的lucene并发搜索多个segment
  3. 返回找到的文档ID和聚合结果
  4. 返回查询结果

2、Fetch阶段

  1. 用户使用拿到的文档ID再次请求拿去数据
  2. 协调节点分发到对应Node的Shard分片,读取segment中的sorted fields
  3. 返回文档原始信息到用户

http://www.ppmy.cn/news/1579514.html

相关文章

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private static void quickSort(int[…

C++中const与指针的使用详解

在 C++ 中,const 和指针的结合可以产生多种语义,主要涉及指针的指向关系和指向数据的可修改性。以下是常见的几种情况及其区别: 1. 指向常量的指针(Pointer to const) 语法:const T* ptr 或 T const* ptr 含义:指针指向的数据是常量,不能通过指针修改数据,但指针本身…

Manus 一码难求,MetaGPT、OpenManus、Camel AI 会是替代方案吗?

Manus 一码难求,MetaGPT、OpenManus、Camel AI 会是替代方案吗? 一、Manus 的现象与问题 Manus 作为一款号称“全球首个通用 AI 智能体”的产品,凭借其强大的功能和新颖的营销策略迅速走红。然而,其封闭的邀请码机制和高昂的使用…

[IP]UART

UART 是一个简易串口ip,用户及配置接口简单。 波特率从9600至2000000。 该 IP 支持以下特性: 异步串行通信:标准 UART 协议(1 起始位,8 数据位,1 停止位,无奇偶校验)。 参数化配置…

设计模式之美

UML建模 统一建模语言(UML)是用来设计软件的可视化建模语言。它的语言特点是简单 统一 图形化 能表达软件设计中的动态与静态信息。 UML的分类 动态结构图: 类图 对象图 组件图 部署图 动态行为图: 状态图 活动图 时序图 协作…

python Jsonpath表达式语法取值

python Jsonpath 语法规则: 演示数据:{"status":"0","msg":"成功","data": [ {"foo1": "bar1"},{"foo1": "bar2"}]} 根节点:$ $.status $.…

DAY33 贪心算法Ⅱ

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 想到把整体利润分解为每天的利润&#xff0c;就豁然开朗了。 class Solution { public:int maxProfit(vector<int>& prices) {int result0;for(int i1;i<prices.size();i){resultmax(0,pric…

C#中,如何隐藏TextBox/RichTextBox中闪烁的光标?

方案&#xff1a;调用Windows API 1> 将TextBox的TabStop设置为false&#xff1b; 2> 在程序中相应位置加入下列代码 using System.Runtime.InteropServices; …… [DllImport("user32", EntryPoint "HideCaret")] private static extern bool…