北京城乡建设厅网站,某网站seo诊断分析和优化方案,wordpress留言样式,做一个网站加优化排名得多少钱本文章收录于【Elasticsearch 系列】#xff0c;将详细的讲解 Elasticsearch 整个大体系#xff0c;包括但不限于ELK讲解、ES调优、海量数据处理等。 一、什么是文档存储#xff08;distributed document store#xff09; Elasticsearch在跑起来以后#xff0c;其实起到的… 本文章收录于【Elasticsearch 系列】将详细的讲解 Elasticsearch 整个大体系包括但不限于ELK讲解、ES调优、海量数据处理等。 一、什么是文档存储distributed document store Elasticsearch在跑起来以后其实起到的第一个最核心的功能就是一个分布式的文档数据存储系统。ES是分布式的。文档数据存储系统。文档数据存储系统。 文档数据es可以存储和操作json文档类型的数据而且这也是es的核心数据结构。 存储系统es可以对json文档类型的数据进行存储查询创建更新删除等等操作。其实已经起到了一个什么样的效果呢其实ES满足了这些功能就可以说已经是一个NoSQL的存储系统了。 围绕着document在操作其实就是把es当成了一个NoSQL存储引擎一个可以存储文档类型数据的存储系统在操作里面的document。 es可以作为一个分布式的文档存储系统所以说我们的应用系统是不是就可以基于这个概念去进行相关的应用程序的开发了。 什么类型的应用程序呢 1数据量较大es的分布式本质可以帮助你快速进行扩容承载大量数据 2数据结构灵活多变随时可能会变化而且数据结构之间的关系非常复杂如果我们用传统数据库那是不是很坑因为要面临大量的表 3对数据的相关操作较为简单比如就是一些简单的增删改查用我们之前讲解的那些document操作就可以搞定 4NoSQL数据库适用的也是类似于上面的这种场景 举个例子比如说像一些网站系统或者是普通的电商系统博客系统面向对象概念比较复杂但是作为终端网站来说没什么太复杂的功能就是一些简单的CRUD操作而且数据量可能还比较大。这个时候选用ES这种NoSQL型的数据存储比传统的复杂的功能务必强大的支持SQL的关系型数据库更加合适一些。无论是性能还是吞吐量可能都会更好。 二、document数据路由原理 1、document路由到shard上是什么意思 我们知道,一个index的数据会被分为多片,每片都在一个shard中。 所以说一个document ,只能存在于一个shard中。 当客户端创建document的时候, es此时就需要决定,这个document放在这个index的哪个shard上。这个过程,就称之为数据路由document routing。 2、路由算法 公式shard hash(routing) % number_of_primary_shards 举个例子一个index有3个primary shardP0P1P2。每次增删改查一个document的时候都会带过来一个routing number默认就是这个document的_id可能是手动指定也可能是自动生成默认routing _id假设_id1会将这个routing值传入一个hash函数中产出一个routing值的hash值hash(routing) 21假设然后将hash函数产出的值对这个index的primary shard的数量求余数21 % 3 0就决定了这个document就放在P0上。 决定一个document在哪个shard上最重要的一个值就是routing值默认是_id也可以手动指定相同的routing值每次过来从hash函数中产出的hash值一定是相同的。 无论hash值是几无论是什么数字对number_of_primary_shards求余数结果一定是在0~number_of_primary_shards-1之间这个范围内的。 3、_id or custom routing value 默认的routing就是_id。也可以在发送请求的时候手动指定一个routing value比如说put /index/_doc/id?routinguser_id 手动指定routing value是很有用的可以保证说某一类document一定被路由到一个shard上去那么在后续进行应用级别的负载均衡以及提升批量读取的性能的时候是很有帮助的 4、primary shard数量为啥是不可变的 primary shard 数量之所有不能变化的原因是由于es的路由算法决定的。假如primary shard 可以变的话当新增了一个节点后通过路由算法最后得出来的值会发生变化导致找不到数据造成数据假丢失的情况增加节点之后得出来的值和之前的值不一样。 三、增删改查内部原理 elasticsearch 内部增删改执行步骤如下所示 1客户端选择一个node发送请求过去这个node就是coordinating node协调节点 2coordinating node对document进行路由将请求转发给对应的node有primary shard 3实际的node上的primary shard处理请求然后将数据同步到replica node 4coordinating node如果发现primary node和所有replica node都搞定之后就返回响应结果给客户端 四、es查询操作内部原理 elasticsearch 内部查询执行步骤如下所示 1、客户端发送请求到任意一个node成为coordinate node 2、coordinate node对document进行路由将请求转发到对应的node此时会使用round-robin随机轮询算法在primary shard以及其所有replica中随机选择一个让读请求负载均衡 3、接收请求的node返回document给coordinate node 4、coordinate node返回document给客户端 特殊情况document如果还在建立索引过程中可能只有primary shard有任何一个replica shard都没有此时可能会导致无法读取到document但是document完成索引建立之后primary shard和replica shard就都有了 本文中所有涉及到的手绘图地址如下方便大家查阅以及转存 【腾讯文档】13_01_document数据路由原理与增删改查内部原理 https://docs.qq.com/flowchart/DUlFCVXNqaWVjV2ZB 本系列所有的图解Elasticsearch 都在以下的文档中我把二维码贴出来方便大家阅读以及转存 END 本文章收录于【Elasticsearch 系列】将详细的讲解 Elasticsearch 整个大体系包括但不限于ELK讲解、ES调优、海量数据处理等。