
elasticsearch
程序员面试笔记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
shard&replica机制再次梳理以及单node环境中创建index图解
(8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上。(7)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard。(5)replica shard是primary shard的副本,负责容错,以及承担读请求负载。原创 2024-05-06 21:25:41 · 333 阅读 · 0 评论 -
Elasticsearch的功能、适用场景以及特点介绍
(4)GitHub(开源代码管理),搜索上千亿行代码。原创 2024-05-06 21:25:26 · 769 阅读 · 0 评论 -
document的全量替换、强制创建以及图解lazy delete机制
(3)es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除标记为deleted的document。(2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容。(1)创建文档与全量替换的语法是一样的,有时我们只是想新建文档,不想替换文档,如果强制进行创建呢?1、document的全量替换。原创 2024-05-06 21:25:12 · 191 阅读 · 0 评论 -
document的_source元数据以及定制返回结果解析
source元数据:就是说,我们在创建一个document的时候,使用的那个放在request body中的json串,默认情况下,在get的时候,会原封不动的给我们返回回来。定制返回的结果,指定_source中,返回哪些field。1、_source元数据。原创 2024-05-06 21:24:44 · 181 阅读 · 0 评论 -
document id的手动指定与自动生成两种方式解析
一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做员工检索功能。如果说,我们是在做一个系统,这个系统主要的数据存储就是es一种,也就是说,数据产生出来以后,可能就没有id,直接就放es一个存储,那么这个时候,可能就不太适合说手动指定document id的形式了,因为你也不知道id应该是什么,此时可以采取下面要讲解的让es自动生成id的方式。原创 2024-05-06 21:24:27 · 340 阅读 · 0 评论 -
上机动手实战演练mget批量查询api
可以说mget是很重要的,一般来说,在进行查询的时候,如果一次性要查询多条数据的话,那么一定要用batch批量操作的api。就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的。如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍。(3)如果查询的document是一个index下的不同type种的话。(4)如果查询的数据都在同一个index下的同一个type下,最简单了。(2)mget批量查询。(1)一条一条的查询。原创 2024-04-14 20:12:05 · 243 阅读 · 0 评论 -
上机动手实战演练基于_version进行乐观锁并发控制
基于最新的数据和版本号,去进行修改,修改后,带上最新的版本号,可能这个步骤会需要反复执行好几次,才能成功,特别是在多线程并发更新同一条数据很频繁的情况下。(4)另外一个客户端,尝试基于version=1的数据去进行修改,同样带上version版本号,进行乐观锁的并发控制。同时带上数据的版本号,确保说,es中的数据的版本号,跟客户端中的数据的版本号是相同的,才能修改。(5)在乐观锁成功阻止并发问题之后,尝试正确的完成更新。(3)其中一个客户端,先更新了一下这个数据。(1)先构造一条数据出来。原创 2024-04-14 20:10:05 · 310 阅读 · 0 评论 -
上机动手实战演练基于groovy脚本进行partial update
如果指定的document不存在,就执行upsert中的初始化操作;如果指定的document存在,就执行doc或者script指定的partial update操作。es scripting module,我们会在高手进阶篇去讲解,这里就只是初步讲解一下。es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作。基于groovy脚本,如何执行partial update。(4)upsert操作。(3)用脚本删除文档。原创 2024-04-14 20:07:53 · 344 阅读 · 0 评论 -
分布式文档系统_上机动手实战演练bulk批量增删改
bulk api对json的语法,有严格的要求,每个json串不能换行,只能放一行,同时一个json串和一个json串之间,必须有一个换行。bulk request会加载到内存里,如果太大的话,性能反而会下降,因此需要反复尝试一个最佳的bulk size。bulk操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志。(3)index:普通的put操作,可以是创建文档,也可以是全量替换文档。(1)delete:删除一个文档,只要1个json串就可以了。原创 2024-04-14 20:05:54 · 160 阅读 · 0 评论 -
分布式文档系统_深度图解剖析document数据路由原理
无论hash值是几,无论是什么数字,对number_of_primary_shards求余数,结果一定是在0~number_of_primary_shards-1之间这个范围内的。决定一个document在哪个shard上,最重要的一个值就是routing值,默认是_id,也可以手动指定,相同的routing值,每次过来,从hash函数中,产出的hash值一定是相同的。会将这个routing值,传入一个hash函数中,产出一个routing值的hash值,hash(routing) = 21。原创 2024-04-14 20:02:33 · 353 阅读 · 0 评论 -
分布式文档系统_阶段性总结以及什么是distributed document store
举个例子,比如说像一些网站系统,或者是普通的电商系统,博客系统,面向对象概念比较复杂,但是作为终端网站来说,没什么太复杂的功能,就是一些简单的CRUD操作,而且数据量可能还比较大。无论是性能,还是吞吐量,可能都会更好。到目前为止,你觉得你在学什么东西,给大家一个直观的感觉,好像已经知道了es是分布式的,包括一些基本的原理,然后花了不少时间在学习document本身相关的操作,增删改查。es可以作为一个分布式的文档存储系统,所以说,我们的应用系统,是不是就可以基于这个概念,去进行相关的应用程序的开发了。原创 2024-04-14 20:01:25 · 317 阅读 · 0 评论 -
手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等
primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。(6)Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。原创 2024-04-13 09:47:15 · 344 阅读 · 0 评论 -
手工画图剖析Elasticsearch的基础分布式架构
cluster discovery(集群发现机制,我们之前在做那个集群status从yellow转green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并且加入了进去,还接受了部分数据,replica shard)垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是10T,但是当你的总数据量达到5000T的时候,你要采购多少台最强大的服务器啊。shard副本,请求路由,集群扩容,shard重分配。普通服务器:1T,1万,100万。原创 2024-04-13 09:46:11 · 143 阅读 · 0 评论 -
深度图解剖析Elasticsearch并发冲突问题
原创 2024-04-13 09:44:52 · 99 阅读 · 0 评论 -
深度图解剖析悲观锁与乐观锁两种并发控制方案
原创 2024-04-13 09:43:29 · 140 阅读 · 0 评论 -
深度图解剖析悲观锁与乐观锁两种并发控制方案
原创 2024-04-13 09:42:15 · 101 阅读 · 0 评论 -
用大白话告诉你什么是Elasticsearch
做软件开发的话,或者对IT、计算机有一定的了解的话,都知道,数据都是存储在数据库里面的,比如说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息,等等吧。1、比方说,每条记录的指定字段的文本,可能会很长,比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符,这个时候,每次都要对每条记录的所有文本进行扫描,懒判断说,你包不包含我指定的这个关键词(比如说“牙膏”)IT系统的搜索:OA软件,办公自动化软件,会议管理,日程管理,项目管理,员工管理,搜索“张三”,“张三儿”,“张小三”;原创 2024-04-13 09:40:35 · 159 阅读 · 0 评论