当前位置: 首页 > 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…...

PX4飞控开发实战指南:从环境搭建到自主飞行

PX4飞控开发实战指南&#xff1a;从环境搭建到自主飞行 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 一、认知铺垫&#xff1a;无人机大脑如何工作&#xff1f; 你是否好奇无人机如何在空中保持…...

3大核心能力:黑苹果爱好者的系统构建指南

3大核心能力&#xff1a;黑苹果爱好者的系统构建指南 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 评估硬件兼容性 为什么同样的硬件配置&#xff0c;别人的黑苹果…...

给CUDA新手的3DGS代码导读:从forward.cu到backward.cu,一步步拆解渲染流程

给CUDA新手的3DGS代码导读&#xff1a;从forward.cu到backward.cu&#xff0c;一步步拆解渲染流程 第一次看到3D Gaussian Splatting&#xff08;3DGS&#xff09;的CUDA代码时&#xff0c;我盯着那些复杂的核函数和内存操作发了半小时呆。作为从PyTorch转型过来的研究者&#…...

Windows 10 实战:基于 FFmpeg + Nginx 构建 RTSP 转 RTMP/HLS 流媒体网关

1. 为什么需要RTSP转RTMP/HLS网关 最近接手了一个监控项目&#xff0c;甲方要求将内网摄像头的实时画面通过网页展示给外网用户。刚开始觉得挺简单&#xff0c;直到发现摄像头输出的是RTSP协议——这玩意儿在浏览器里根本没法直接播放&#xff01;相信不少做过视频监控开发的同…...

TranslucentTB:轻量任务栏视觉增强工具,让Windows桌面颜值提升300%

TranslucentTB&#xff1a;轻量任务栏视觉增强工具&#xff0c;让Windows桌面颜值提升300% 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB …...

火狐浏览器必备:Z-Library Finder扩展安装与使用全攻略(附最新下载链接)

火狐浏览器高效获取电子书资源&#xff1a;Z-Library Finder扩展深度指南 在数字阅读日益普及的今天&#xff0c;电子书资源获取工具成为许多阅读爱好者的刚需。对于火狐浏览器用户而言&#xff0c;Z-Library Finder扩展无疑是一款能够极大提升电子书搜索效率的神器。这款工具专…...

计算机毕业设计springboot基于的医院预约挂号系统 智慧医疗服务平台的设计与实现——以在线挂号预约为核心功能 SpringBoot框架下的医疗机构门诊预约管理系统开发

计算机毕业设计springboot基于的医院预约挂号系统w6r0k82u &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的快速发展和普及&#xff0c;医疗领域也逐渐受到其影响…...

基于dify智能客服工作流的多智能体架构实战:高并发场景下的设计与优化

背景痛点&#xff1a;当智能客服遭遇流量洪峰 最近在负责一个电商大促期间的智能客服系统保障&#xff0c;真切体会到了传统单体智能体架构的“力不从心”。我们的客服机器人基于一个大语言模型构建&#xff0c;平时QPS在50左右时&#xff0c;响应时间&#xff08;RT&#xff0…...

Unity游戏开发:A*寻路算法实战,5步搞定NPC智能移动(附完整Demo)

Unity游戏开发&#xff1a;A*寻路算法实战指南与高级优化技巧 在游戏开发中&#xff0c;NPC的智能移动一直是开发者需要解决的核心问题之一。想象一下&#xff0c;当玩家在《魔兽世界》中穿越荆棘谷时&#xff0c;那些巡逻的巨魔守卫是如何绕过树木和山丘找到最短路径的&#x…...

YOLOv5 模型训练避坑大全:从数据集制作到解决 mAP 为 0 的常见报错

YOLOv5 模型训练避坑实战指南&#xff1a;从数据标注到调参优化的全流程解决方案 当你第一次成功运行YOLOv5的官方示例时&#xff0c;那种成就感可能让你误以为目标检测模型训练已经掌握。但现实往往很骨感——当换上自己的数据集后&#xff0c;各种报错接踵而至&#xff1a;显…...