搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小小林熬夜学编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Git 解决下载代码自动转换成CRLF格式的情况(转载)_sourcetree自动转换git到lf
2
“前端已死”?从ChatGPT与低代码平台看未来编程之路_低代码平台是否可以取代前端
3
ChatGPT Mac客户端 下载安装教程(免费 不限次数使用 还支持语音聊天)
4
大数据方向毕业设计:热门选题合集及实践指南_大数据技术毕业设计选题方向
5
【本地运行chatgpt-web】启动前端项目和service服务端项目,也是使用nodejs进行开发的。两个都运行成功才可以使用!
6
腾讯后台开发,2面技术+HR面+offer审批,我只花了7天,2024年最新java运维工程师面试题_腾讯视频后台开发实习生面试
7
华为AI全栈生态布局:中国科技巨头加速创新_华为的边缘ai产品
8
洞态IAST落地实践
9
图像上下文学习|多模态基础模型中的多镜头情境学习
10
postgres应用实战(一):psql功能与应用_psql -at
当前位置:
article
> 正文
es基础学习笔记问题总结_es关闭副本
作者:小小林熬夜学编程 | 2024-06-05 02:28:02
赞
踩
es关闭副本
谈谈分词与倒排索引的原理
首先说分词是给检索用的。
英文:一个单词一个词,很简单。
I am a student
,词与词之间空格分隔。
中文:我是学生,就不能一个字一个字地分,我
-
是
-
学生。这是好分的。还有歧义的,使用户
放心,使用
-
户,使
-
用户。人很容易看出,机器就难多了。所以市面上有各种各样的分词器,
一个强调的效率一个强调的准确率。
倒排索引:倒排针对的是正排。
1.
正排就是我记得我电脑有个文档,讲了
ES
的常见问题总结。那么我就找到文档,从上往下翻
页,找到
ES
的部分。通过文档找文档内容。
2.
倒排:一个
txt
文件
ES
的常见问题
-> D:/
分布式问题总结
.doc
。
所以倒排就是文档内容找文档。当然内容不是全部的,否则也不需要找文档了,内容就是几个分词
而已。这里的
txt
就是搜索引擎。
说说分段存储的思想
Lucene
是著名的搜索开源软件,
ElasticSearch
和
Solr
底层用的都是它。
分段存储是
Lucene
的思想。
早期,都是一个整个文档建立一个大的倒排索引。简单,快速,但是问题随之而来。
文档有个很小的改动,整个索引需要重新建立,速度慢,成本高,为了提高速度,定期更新那么时
效性就差。
现在一个索引文件,拆分为多个子文件,每个子文件是段。修改的数据不影响的段不必做处理。
3
、谈谈你对段合并的策略思想的认识
分段的思想大大的提高了维护索引的效率。但是随之就有了新的问题。
每次新增数据就会新增加一个段,时间久了,一个文档对应的段非常多。段多了,也就影响检索性
能了。
检索过程:
1.
查询所有短中满足条件的数据
2.
对每个段的结果集合并
所以,定期的对段进行合理是很必要的。真是天下大势,分久必合合久必分。
策略:将段按大小排列分组,大到一定程度的不参与合并。小的组内合并。整体维持在一个合理的
大小范围。当然这个大到底应该是多少,是用户可配置的。这也符合设计的思想。
能说说
ElasticSearch
写索引的逻辑吗?
ElasticSearch
是集群的
=
主分片
+
副本分片。
写索引只能写主分片,然后主分片同步到副本分片上。但主分片不是固定的,可能网络原因,之前
还是
Node1
是主分片,后来就变成了
Node2
经过选举成了主分片了。
客户端如何知道哪个是主分片呢? 看下面过程。
1.
客户端向某个节点
NodeX
发送写请求
2. NodeX
通过文档信息,请求会转发到主分片的节点上
3.
主分片处理完,通知到副本分片同步数据,向
Nodex
发送成功信息。
4. Nodex
将处理结果返回给客户端。
熟悉
ElasticSearch
集群中搜索数据的过程吗?
1.
客户端向集群发送请求,集群随机选择一个
NodeX
处理这次请求。
2. Nodex
先计算文档在哪个主分片上,比如是主分片
A
,它有三个副本
A1
,
A2
,
A3
。那么请求
会轮询三个副本中的一个完成请求。
3.
如果无法确认分片,比如检索的不是一个文档,就遍历所有分片。
补充一点,一个节点的存储量是有限的,于是有了分片的概念。但是分片可能有丢失,于是有了副
本的概念。
比如:
ES
集群有
3
个分片,分片
A
、分片
B
、分片
C
,那么分片
A +
分片
B +
分片
C =
所有数据,每个分
片只有大概
1/3
。分片
A
又有副本
A1 A2 A3
,数据都是一样的。
了解
ElasticSearch
深翻页的问题及解决吗?
深翻页:比如我们检索一次,轮询所有分片,汇集结果,根据
TF-IDF
等算法打分,排序后将前
10
条数据返回。用户感觉不错,说我看看下一页。
ES
依然是轮询所有分片,汇集结果,根据
TF-IDF
等算法打分,排序后将前
11-20
条数据返回。
对用户来说,翻页应该很快啊,但是实际上,第一次检索多复杂,下一次检索就多复杂。
解决的话,可以把用户的检索结果,存入
Redis
中
10
分钟。这样分页就很快,超过
10
分钟,用户
不翻页,也就不会翻页了,数据就可以清除了。
熟悉
ElasticSearch
性能优化
1.
批量提交
背景是大量的写操作,每次提交都是一次网络开销。网络永久是优化要考虑的重点。
2.
优化硬盘
索引文件需要落地硬盘,段的思想又带来了更多的小文件,磁盘
IO
是
ES
的性能瓶颈。一个固态硬 盘比普通硬盘好太多。
3.
减少副本数量
副本可以保证集群的可用性,但是严重影响了 写索引的效率。写索引时不只完成写入索引,还要完成索引到副本的同步。ES
不是存储引擎,不要考虑数据丢失,性能更重要。 如果是批量导入,建议就关闭副本。
ElasticSearch
查询优化手段有哪些?
设计阶段调优
(
1
)根据业务增量需求,采取基于日期模板创建索引,通过
roll over API
滚动索引;
(
2
)使用别名进行索引管理;
(
3
)每天凌晨定时对索引做
force_merge
操作,以释放空间;
(
4
)采取冷热分离机制,热数据存储到
SSD
,提高检索效率;冷数据定期进行
shrink
操作,以缩
减存储;
(
5
)采取
curator
进行索引的生命周期管理;
(
6
)仅针对需要分词的字段,合理的设置分词器;
(
7
)
Mapping
阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。
……..
写入调优
(
1
)写入前副本数设置为
0
;
(
2
)写入前关闭
refresh_interval
设置为
-1
,禁用刷新机制;
(
3
)写入过程中:采取
bulk
批量写入;
(
4
)写入后恢复副本数和刷新间隔;
(
5
)尽量使用自动生成的
id
。
1.
批量提交
背景是大量的写操作,每次提交都是一次网络开销。网络永久是优化要考虑的重点。
2.
优化硬盘
索引文件需要落地硬盘,段的思想又带来了更多的小文件,磁盘
IO
是
ES
的性能瓶颈。一个固态硬
盘比普通硬盘好太多。
3.
减少副本数量
副本可以保证集群的可用性,但是严重影响了 写索引的效率。写索引时不只完成写入索引,还要完
成索引到副本的同步。
ES
不是存储引擎,不要考虑数据丢失,性能更重要。 如果是批量导入,建
议就关闭副本。
9
、
ElasticSearch
查询优化手段有哪些?
设计阶段调优
(
1
)根据业务增量需求,采取基于日期模板创建索引,通过
roll over API
滚动索引;
(
2
)使用别名进行索引管理;
(
3
)每天凌晨定时对索引做
force_merge
操作,以释放空间;
(
4
)采取冷热分离机制,热数据存储到
SSD
,提高检索效率;冷数据定期进行
shrink
操作,以缩
减存储;
(
5
)采取
curator
进行索引的生命周期管理;
(
6
)仅针对需要分词的字段,合理的设置分词器;
(
7
)
Mapping
阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。
……..
写入调优
(
1
)写入前副本数设置为
0
;
(
2
)写入前关闭
refresh_interval
设置为
-1
,禁用刷新机制;
(
3
)写入过程中:采取
bulk
批量写入;
(
4
)写入后恢复副本数和刷新间隔;
(
5
)尽量使用自动生成的
id
。
查询调优
(
1
)禁用
wildcard
;
(
2
)禁用批量
terms
(成百上千的场景);
(
3
)充分利用倒排索引机制,能
keyword
类型尽量
keyword
;
(
4
)数据量大时候,可以先基于时间敲定索引再检索;
(
5
)设置合理的路由机制。
10
、
elasticsearch
是如何实现
master
选举的?
面试官:想了解
ES
集群的底层原理,不再只关注业务层面了。
前置前提:
(
1
)只有候选主节点(
master
:
true
)的节点才能成为主节点。
(
2
)最小主节点数(
min_master_nodes
)的目的是防止脑裂。
核对了一下代码,核心入口为
fifindMaster
,选择主节点成功返回对应
Master
,否则返回
null
。选
举流程大致描述如下:
第一步:确认候选主节点数达标,
elasticsearch.yml
设置的值
discovery.zen.minimum_master_nodes
;
第二步:比较:先判定是否具备
master
资格,具备候选主节点资格的优先返回;
若两节点都为候选主节点,则
id
小的值会主节点。注意这里的
id
为
string
类型。
题外话:获取节点
id
的方法。
GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax,id,name
ip port heapPercent heapMax id name
11
、
elasticsearch
索引数据多了怎么办,如何调优,部署?
面试官:想了解大数据量的运维能力。
解答:索引数据的规划,应在前期做好规划,正所谓
“
设计先行,编码在后
”
,这样才能有效的避免
突如其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。
如何调优:
动态索引层面
基于模板
+
时间
+rollover api
滚动创建索引,举例:设计阶段定义:
blog
索引的模板格式为:
blog_index_
时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量
非常大,接近于上线
2
的
32
次幂
-1
,索引存储达到了
TB+
甚至更大。
一旦单个索引很大,存储等各种风险也随之而来,所以要提前考虑
+
及早避免。
存储层面
冷热数据分离存储,热数据(比如最近
3
天或者一周的数据),其余为冷数据。
对于冷数据不会再写入新数据,可以考虑定期
force_merge
加
shrink
压缩操作,节省存储空间和
检索效率。
部署层面
一旦之前没有规划,这里就属于应急策略。
结合
ES
自身的支持动态扩展的特点,动态新增机器的方式可以缓解集群压力,注意:如果之前主
节点等规划合理,不需要重启集群也能完成动态新增的
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/674448
推荐阅读
article
Python
数据分析
之
绘制
相关性
热
力图
的完整教程_
python
绘制
特征
相关性
分析
热
力图
...
文章将介绍如何使用
Python
中的Pandas和Seaborn库来读取数据、计算相关系数矩阵,并
绘制
出直观、易于理解的
热
...
赞
踩
article
使用
ESP8266
(基于官方
SDK
)
接入
阿里
云物
联网
平台_
esp8266
使用
...
引言作为物
联网
开发者,
ESP8266
应该一点都不陌生了。只需十几块钱淘宝一个小开发板,就可以连上Wi-Fi
接入
互
联网
,尽...
赞
踩
article
广义
表
存储
结构
|数据
结构
_
广义
表
的
存储
结构
...
文章目录一、头尾链
表
的
存储
结构
1、
表
头和
表
尾2、
表
结点和原子结点二、扩展线性链
表
的
存储
结构
一、头尾链
表
的
存储
结构
由于
广义
...
赞
踩
article
python
嵩天
课后
题及
答案
_
python
程序设计
基础(
嵩天
)
第五章
课后
习题部分
答案
...
第五章
p1515.2:实现isodd()函数,参数为整数,如果参数为奇数,返回true,否则返回false。def is...
赞
踩
article
react
中使用
v
id
eo
.js,排坑记录_
the
element
or
id
supplied
i...
在React中使用
v
id
eo
.js,bug记录_
the
element
or
id
supplied
is not va...
赞
踩
article
二叉树
的链式
实现
...
相关术语:平衡树,非平衡树,完全数,满树。
实现
策略:1)数组
实现
这个还是非常重要的,有时间写一下,先用链来写元素n的(从...
赞
踩
article
PCB
安规
设计规范_pcb
电气
安全
间隙
标准
要求
ice...
安规
就是产品认证中对产品
安全
的
要求
,包含产品零件的
安全
的
要求
、组成成品后的
安全
要求
。
安规
其实是中国人自己的产物,国外一般...
赞
踩
article
自学
CTF
-
web
Day2
PHP...
(小总结一下:虽然感觉写的东西没多少,但这点内容真学了蛮久的,因为讲到一些php命令的时候因为之前根本没接触过php所以...
赞
踩
article
大
语言
模型
系列-总述_
大
语言
模型
(
llm
):
研究
人员发现,
扩展
plm
(例如
扩展
模型
大
小或数据
大
...
研究
人员发现,
扩展
预训练
模型
(Pre-training Language Model,PLM),例如
扩展
模型
大
小或数据
大
...
赞
踩
article
go
函数
延迟
调用
defer
_
小
袁今天刚学会了
defer
延迟
调用
...
目录一、
defer
执行顺序二、
延迟
执行顺序1、使用
延迟
并发解锁2、使用
延迟
释放文件句柄在
defer
归属的
函数
即将返回...
赞
踩
article
gitee
开源项目_
gitee
fanfuhuang
...
分享一些本人的项目资源:https://
gitee
.com/huang-wanpeng目前也算是前端小菜鸟一只,欢迎大家...
赞
踩
article
技术
管理
与
业务
管理
并驾齐驱...
近年来,IT网络建设以高于30%的速度快速发展,但是,在网络建设高速发展的同时,各行业巨大的IT维护和
管理
成本也在与日俱...
赞
踩
article
【
微信
小
程序
】根据
屏幕
尺寸去调整
图片
尺寸
宽高比
_
微信
小
程序
一张
图片
铺满这个
屏幕
,该
图片
的
宽高比
...
1.获取
图片
的
原始宽高,并获取到
图片
原始宽高
的
宽高比
let src = "
图片
地址"wx.getImageInfo({ ...
赞
踩
article
【机器
学习
300
问】63、如何区分二
分类
、
多
分类
和
多
标签
分类
?...
如何区分二
分类
、
多
分类
和
多
标签
分类
?_二
分类
二
分类
&nbs...
赞
踩
article
安卓
设备
修改
屏幕
像素密度以及查看
屏幕
分辨率
_
手机
adb
修改
分辨率
...
安卓
设备
修改
屏幕
像素密度以及查看
屏幕
分辨率
打开ADB工具
adb
常用
修改
分辨率
命令注意:首先确保电脑上ADB配置成功,且能...
赞
踩
article
Airtest
全新升级兼容
Selenium
4.0
,快来看看
更新
的内容吧_
airtest
可以
用xp...
在上周
更新
推文中提到,我们
Airtest
-
更新
到了1.0.6版本,新增支持
Selenium
4.0
的语法,那么我们来看一下...
赞
踩
article
SQL
优化
干货总结_
sql
中
or
什么时候会
全表
查询
...
1. 尽量避免在字段开头模糊
查询
,会导致数据库引擎放弃索引进行
全表
扫描。如下:
优化
方式:尽量在字段后面使用模糊
查询
。如下...
赞
踩
article
一套
通用
的
Java
后台
管理
系统
,采用
springboot
实现(附带源码地址)_
springboot
...
开源一套简单
通用
的
后台
管理
系统
前言前段时间我们写一个简单的
后台
模板SpringBoot系列——Security + La...
赞
踩
article
程序员
面试
过程
中常常忽略的一些细节_
程序员
面试
大部分会
问
技术
上的
问
题
吗...
程序员
面试
过程
中常常会出现一些细节注意不到,老师来给你总结下那些
问
题
是
程序员
面试
过程
中常常忽略的。1、不好好准备
程序员
在...
赞
踩
article
HashMap
总结以及
顺序
表
、链
表
、
哈希
表
、
数据结构
_
哈希
表
和
顺序
表
区别...
HashMap
总结以及
顺序
表
、链
表
、
哈希
表
、
数据结构
首先本文是在下浅显的自我理解,欢迎各位大佬喷我。
数据结构
顺序
表
:顾名...
赞
踩
相关标签
python
开发语言
ESP8266
阿里云
物联网
IoT
广义表
存储结构
python嵩天课后题及答案
javascript
react.js
前端
java
数据结构与算法
php
网络安全
web安全
语言模型
人工智能
自然语言处理
深度学习
神经网络
函数延迟调用
defer