当前位置: 首页 > news >正文

ElasticSearch 学习笔记总结(三)

文章目录

  • 一、ES 相关名词 专业介绍
  • 二、ES 系统架构
  • 三、ES 创建分片副本 和 elasticsearch-head插件
  • 四、ES 故障转移
  • 五、ES 应对故障
  • 六、ES 路由计算 和 分片控制
  • 七、ES集群 数据写流程
  • 八、ES集群 数据读流程
  • 九、ES集群 更新流程 和 批量操作
  • 十、ES 相关重要 概念 和 名词
  • 十一、ES集群 文档刷新 文档刷写 文档合并
  • 十二、ES集群 文档分析
  • 十三、ES集群 文档控制
  • 十四、ES Kibana

一、ES 相关名词 专业介绍

Elasticsearch 索引(index):一切设计都是为了提高搜索的性能。

Elasticsearch 类型(type):7.X版本以上的都已经不再支持索引类型了(默认类型为:_doc)。

Elasticsearch 文档(Document):
在这里插入图片描述
Elasticsearch 文档(Field):相当于数据表的字段,对文档数据根据不同属性进行的分类标识。

Elasticsearch 映射(Mapping):
在这里插入图片描述
Elasticsearch 分片(Shards):可以理解为分表效果,将不同的分片放到不同的集群节点上。
在这里插入图片描述
在这里插入图片描述

Elasticsearch 副本(Replicas):备份的效果。
在这里插入图片描述

Elasticsearch 分配(Allocation):就是如何分配的效果。
在这里插入图片描述

二、ES 系统架构

在这里插入图片描述

三、ES 创建分片副本 和 elasticsearch-head插件

启动三台es节点服务器。

创建索引users 分配 3个主分片和一份副本(每个主分片拥有一个副本分片)。

// put方法:http://127.0.0.1:1001/users
{"settings" : {"number_of_shards" : 3,"number_of_replicas" : 1}
}
// get方法:http://127.0.0.1:1001/users 
// 进行查看

elasticsearch-head是一个浏览器插件,专门来监控es集群的相关内容信息。

在这里插入图片描述

正常启动后的效果:
在这里插入图片描述

四、ES 故障转移

单点集群故障问题:其实单点了就不算是集群了,自身宕机后三个主分片的数据和副本就没了。

多个节点集群时,就避免了上面的问题出现:

  • 粗框的就是主分片,其他的就是副本。
    在这里插入图片描述

水平扩容:当添加第三个节点的时候,就会重新分配,更加均衡提高吞吐量。

在这里插入图片描述
注意:如何分配的 以及 最大扩容多少。
在这里插入图片描述
如果超过预期的扩容节点怎么办?
在这里插入图片描述
扩容实现:

// put方法:http://127.0.0.1:1001/users/_settings
{"number_of_replicas" : 2    
}

五、ES 应对故障

在这里插入图片描述

六、ES 路由计算 和 分片控制

路由计算:就是数据放到哪里,应该从哪里取数据。
在这里插入图片描述
分片控制:

  • 虽说,每一个节点都有备份,有数据,但是并不是访问哪个节点就会直接获取该节点数据。
  • 每个节点都可以是协调节点,协调节点的效果,如下。
    在这里插入图片描述

七、ES集群 数据写流程

1. 客户端请求集群节点(任意节点)。
2. 协调节点将请求转换到指定的节点。
3. 主分片将数据保存。
4. 主分片将数据发送给副本。
5. 副本保存后,反馈给主分片。
6. 主分片收到反馈后,再反馈给客户端。
7. 客户端接收到反馈。
在这里插入图片描述

consistency 一致性参数:
在这里插入图片描述
在这里插入图片描述
timeout 超时参数:
在这里插入图片描述

八、ES集群 数据读流程

1. 客户端发送查询请求到协调节点。
2. 协调节点计算数据所在的分片以及全部的副本位置。
3. 为了能够负载均衡,可以轮询所有节点。
4. 将请求转发给具体的节点。
5. 节点返回查询结果,将结果反馈给客户端。
在这里插入图片描述

九、ES集群 更新流程 和 批量操作

更新流程:与新增相同,更新主片,更新副本。

批量操作:其实批量操作也可以分批到每个节点,进行单节点相关操作。

在这里插入图片描述

十、ES 相关重要 概念 和 名词

分片原理:就是倒排索引。
分片是Elasticsearch最小的工作单元。

Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。

倒排索引就是 反向索引(inverted index)。与之对应的是正派索引(forward index)。

其实就是分词的效果:
在这里插入图片描述

还有一个分词器的概念:因此,有中文、英文等不同情况,所以要用到分词器。

还有能分词,不能分词的: text 和 keyword 。

ik_max_word:最细粒度的拆分。
ik_smart:最粗力度的拆分。


索引名词:

  • 词条:索引中最小的存储和查询单元。
  • 词典:字典,词条的集合,B+,HashMap。
  • 倒排表:存在好多倒排项,效果就是倒排索引解释一样。

倒排索引写入磁盘后是不可变的,好处:
在这里插入图片描述
加粗样式
坏处:不可变!
在这里插入图片描述

如何保留不变性的前提下实现倒排索引的更新?
在这里插入图片描述

十一、ES集群 文档刷新 文档刷写 文档合并

ES是 近实施搜索的,原理如下:
在这里插入图片描述

十二、ES集群 文档分析

分析 原理过程:

  • 将一块文档分成适合于倒排索引的独立的 词条。
  • 将这些词条统一化为标准格式以提高它们的 可搜索性,或者 recall分析器执行上面的工作。

分析器包含三个主要功能:字符过滤器、分词器、Token过滤器。

在这里插入图片描述
在这里插入图片描述

ES有一些内置分析器:标准分析器、简单分析器、空格分析器、语言分析器。


标准分析器 的使用:

// get方法:http://127.0.0.1:1001/_analyze
{"analyzer":"standard", // 标准分析器"text":"Text to analyze"
}

IK 中文分析器:

  • ik中文分词器下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0

将解压后的文件夹放入ES根目录下的plugins目录下,重启ES即可使用。
在这里插入图片描述

有些时候,ik分词器并不知道有些词汇是一个单词,所以还要告诉ik分词器,哪些是一个单词。

在这里插入图片描述
在这里插入图片描述
文件目录如下:
在这里插入图片描述
在这里插入图片描述


自定义分析器:

  • 创建索引的时候,通过参数来自定义分析器。
// put方法:http://127.0.0.1:1001/my_index
{"settings": {"analysis": {"char_filter": {"&_to_and": {"type": "mapping", "mappings": ["&=> and "]}}, "filter": {"my_stopwords": {"type": "stop", "stopwords": ["the", "a"]}}, "analyzer": {"my_analyzer": {"type": "custom", "char_filter": ["html_strip", "&_to_and"], "tokenizer": "standard", "filter": ["lowercase", "my_stopwords"]}}}}
}

查询验证分析器:

# GET http://127.0.0.1:9200/my_index/_analyze
{"text":"The quick & brown fox","analyzer": "my_analyzer"
}

十三、ES集群 文档控制

场景多个人并发进行处理操作文档时,最后一个人操作的肯定覆盖掉了其他人操作的,理论上应该是这样,但实际会出现一个乱序的情况(不确定谁先完成),那么这种情况应该如何避免。

使用悲观锁 和 乐观锁来处理类似问题:
在这里插入图片描述


ES 乐观锁:
在这里插入图片描述

效果如下:
在这里插入图片描述
在这里插入图片描述

// post方法:http://127.0.0.1:1001/shopping/_update/1001?if_seq_no=1&if_primary_term=1
// 通过if_seq_no=1&if_primary_term=1来操作乐观锁
{"doc":{"title":"华为手机"}
}

外部系统版本控制:
在这里插入图片描述

例如:就是想通过version来进行判别操作:

// post方法:http://127.0.0.1:1001/shopping/_doc/1001?version=3&version_type=external
// 通过声明version_type=external参数。
{"title": "测试手机"
}

版本必须相同或者大于该版本才能进行修改!

十四、ES Kibana

在这里插入图片描述

kibana配置文件:
在这里插入图片描述
类似如下可视化页面:
在这里插入图片描述

相关文章:

ElasticSearch 学习笔记总结(三)

文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、…...

深入理解border以及应用

深入border属性以及应用&#x1f44f;&#x1f44f; border这个属性在开发过程中很常用&#xff0c;常常用它来作为边界的。但是大家真的了解border吗&#xff1f;以及它的形状是什么样子的。 我们先来看这样一段代码&#xff1a;&#x1f44f; <!--* Author: syk 185901…...

如何复现论文?什么是论文复现?

参考资料&#xff1a; 学习篇—顶会Paper复现方法 - 知乎 如何读论文&#xff1f;复现代码&#xff1f;_复现代码是什么意思 - CSDN 我是如何复现我人生的第一篇论文的 - 知乎 在我看来&#xff0c;论文复现应该有一个大前提和分为两个层次。 大前提是你要清楚地懂得自己要…...

22.2.28打卡 Codeforces Round #851 (Div. 2) A~C

A题 One and Two 题面翻译 题目描述 给你一个数列 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ . 数列中的每一个数的值要么是 111 要么是 222 . 找到一个最小的正整数 kkk&#xff0c;使之满足&#xff1a; 1≤k≤n−11 \leq k \leq n-11≤k≤n−1 , anda1⋅a2⋅……...

Learining C++ No.12【vector】

引言&#xff1a; 北京时间&#xff1a;2023/2/27/11:42&#xff0c;高数考试还在进行中&#xff0c;我充分意识到了学校的不高级&#xff0c;因为题目真的没什么意思&#xff0c;虽然挺平易近人&#xff0c;但是……&#xff0c;考试期间时间比较放松&#xff0c;所以不能耽误…...

【数电基础】——逻辑代数运算

目录 1.概念 1.基本逻辑概念 2.基本逻辑电路&#xff08;与或非&#xff09; 逻辑与运算 与门电路&#xff1a; 逻辑或运算 或门电路&#xff1a; ​逻辑非运算&#xff08;逻辑反&#xff09; 非门电路​编辑 3.复合逻辑电路&#xff08;运算&#xff09; 与非逻辑…...

【Redis】什么是缓存与数据库双写不一致?怎么解决?

1. 热点缓存重建 我们以热点缓存 key 重建来一步步引出什么是缓存与数据库双写不一致&#xff0c;及其解决办法。 1.1 什么是热点缓存重建 在实际开发中&#xff0c;开发人员使用 “缓存 过期时间” 的策略来实现加速数据读写和内存使用率&#xff0c;这种策略能满足大多数…...

互联网衰退期,测试工程师35岁之路怎么走...

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…...

动态规划(以背包问题为例)

1) 要求达到的目标为装入的背包的总价值最大&#xff0c;并且重量不超出2) 要求装入的物品不能重复动态规划(Dynamic Programming)算法的核心思想是&#xff1a;将大问题划分为小问题进行解决&#xff0c;从而一步步获取最优解的处理算法。动态规划算法与分治算法类似&#xff…...

Java异常

异常的体系结构 在java的Throwable下有Error和Exception两个子类 Error(错误):程序运行中出现了严重的问题,非代码性错误,无法处理,常见的有虚拟机运行错误和内存溢出等Exception(异常):是由于代码本身造成的问题,可以进行处理,异常一个可以分为运行时异常和编译时异常 运行…...

别克GL8改装完工,一起来看看效果

①豪华商务头等舱 别克GL8作为商务车&#xff0c;不管是家用还是商务接待&#xff0c;原车内饰都太掉档次了&#xff0c;所以车主要求全部换掉。>>织布座椅换成航空座椅 主副驾&#xff1a;改装纳帕皮 中排&#xff1a;改装水晶宝座豪华版航空座椅&#xff0c;带通风、加…...

mac 中 shell 一些知识

mac 设置环境变量首先得看你所使用的 shell shell 是一个命令行解释器&#xff0c;顾名思义就是机器外面的一层壳&#xff0c;用于人机交互&#xff0c;只要是人与电脑之间交互的接口&#xff0c;就可以称为 shell。表现为其作用是用户输入一条命令&#xff0c;shell 就立即解…...

CentOS 配置FTP(开启VSFTPD服务)

网上已经有很多关于VSFTPD的配置&#xff0c;但有两个通病&#xff0c;要么就是原理介绍太多&#xff0c;要么就是不完整&#xff0c;操作下来又要查询多篇文章才能用。 我这里不讲原理&#xff0c;只记录操作&#xff0c;尽可能通过复制下面的操作可以实现FTP读写功能。方便自…...

Http的请求方法

Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求 1.Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法 2.Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。 3.原因&#xff1a;get请求没有请求体&#xff08;好像也可以…...

Python字典-- 内附蓝桥题:统计数字

字典 ~~不定时更新&#x1f383;&#xff0c;上次更新&#xff1a;2023/02/28 &#x1f5e1;常用函数&#xff08;方法&#xff09; 1. dic.get(key) --> 判断字典 dic 是否有 key&#xff0c;有返回其对应的值&#xff0c;没有返回 None 举个栗子&#x1f330; dic …...

文本处理工具

Grep工具的基本使用grep作用&#xff1a;grep是行过滤工具&#xff1b;用于根据关键字进行行过滤提示&#xff1a;通过alias命令设置grep别名&#xff0c;搜索参数时带颜色显示alias grepgrep colorauto 命令语法格式&#xff1a;grep [选项] 参数 文件名grep命令选项&#xff…...

C++STL详解(三)——vector的介绍和使用

文章目录vector的介绍vector的使用vector的定义方式vector的空间增长问题reserve和resizevector的迭代器使用begin 和endrbegin和rendinsert 和erasefind函数元素访问vector迭代器失效问题1&#xff1a;inserse插入扩容时空间销毁造成野指针问题2&#xff1a;erase删除或者inse…...

GEBCO海洋数据下载

一、数据集简介 GEBCO&#xff08;General Bathymetric chart of the Oceans&#xff09;旨在为世界海洋提供最权威的、可公开获取的测深数据集。 目前的网格化测深数据集&#xff0c;即GEBCO_2022网格&#xff0c;是一个全球海洋和陆地的地形模型&#xff0c;在15角秒间隔的…...

【C++容器】vector、map、hash_map、unordered_map四大容器的性能分析【2023.02.28】

摘要 vector是标准容器对数组的封装&#xff0c;是一段连续的线性的内存。map底层是二叉排序树。hash_map是C11之前的无序map&#xff0c;unordered_map底层是hash表&#xff0c;涉及桶算法。现对各个容器的查询与”插入“性能做对比分析&#xff0c;方便后期选择。 测试方案…...

ACM-蓝桥杯训练第一周

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...